@REM @file
@REM   Windows batch file to build BIOS ROM
@REM
@REM Copyright (c) 2006   - 2014, Intel Corporation. All rights reserved.<BR>
@REM 
@REM   This program and the accompanying materials are licensed and made available under
@REM   the terms and conditions of the BSD License that accompanies this distribution.
@REM   The full text of the license may be found at
@REM   http://opensource.org/licenses/bsd-license.php.
@REM 
@REM   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
@REM   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
@REM

@echo off
SetLocal EnableDelayedExpansion EnableExtensions

:: Set script defaults
set exitCode=0
set BackupRom=1
set UpdateVBios=1
set SpiLock=0
set Stitch_Config=Stitch_Config.txt
copy /y nul Stitching.log >nul

:: Set default Suffix as:  YYYY_MM_DD_HHMM
set hour=%time: =0%
reg copy "HKCU\Control Panel\International" "HKCU\Control Panel\International_Temp" /f >nul
reg add "HKCU\Control Panel\International" /v sShortDate /d "yyyy_MM_dd" /f >nul
for /f "tokens=1" %%i in ("%date%") do set today=%%i
reg copy "HKCU\Control Panel\International_Temp" "HKCU\Control Panel\International" /f >nul
reg delete "HKCU\Control Panel\International_Temp" /f >nul
set IFWI_Suffix=%today%_%hour:~0,2%%time:~3,2%

:: Process input arguments
if "%~1"=="?"       goto Usage
if "%~1"=="/?"      goto Usage
if /i "%~1"=="Help" goto Usage

:OptLoop
if /i "%~1"=="/nV" (
    set UpdateVBios=0
    shift
    goto OptLoop
)
if /i "%~1"=="/nB" (
    set BackupRom=0
    shift
    goto OptLoop
)
if /i "%~1"=="/yL" (
    set SpiLock=1
    shift
    goto OptLoop
)

if /i "%~1"=="/B" (
    if "%~2"==""  goto Usage
    if not exist %~2 echo BIOS not found. & goto Usage
    set BIOS_Names=%~2
    set BIOS_File_Name=%~n2
    shift & shift
    goto OptLoop
)
if /i "%~1"=="/C" (
    if "%~2"==""  goto Usage
    if not exist %~2 echo ConfigFile not found. & goto Usage
    set Stitch_Config=%~2
    shift & shift
    goto OptLoop
)
if /i "%~1"=="/S" (
    if "%~2"==""  goto Usage
    set IFWI_Suffix=%~2
    shift & shift
    goto OptLoop
)

if "%BIOS_File_Name:~0,4%"=="MNW2" (
   set Stitch_Config= MNW2_Stitch_Config.txt
)
if "%BIOS_File_Name:~3,4%"=="MNW2" (
   set Stitch_Config= MNW2_Stitch_Config.txt
)

:: if no rom specified by user, search in ./ for ROM files
if "%BIOS_Names%"=="" (
    set "BIOS_Names= "
    for /f "tokens=*" %%i in ('dir /b *.rom') do set BIOS_Names=!BIOS_Names! %%i
    if "!BIOS_Names!"==" " (
        echo NO .ROM files found !!!
        goto Usage
    )
)

:: Parse the Stitch_Config File
if not exist %Stitch_Config% (
    echo Stitch Configuration File %Stitch_Config% not found.
    goto ScriptFail
)
for /f "delims== tokens=1,2" %%i in (%Stitch_Config%) do (
    if /i "%%i"=="HEADER"      set IFWI_HEADER=%%j
    if /i "%%i"=="SEC_VERSION" set SEC_VERSION=%%j
    if /i "%%i"=="Source" (
        if /i "%%j"=="ALPHA" set Source_Prefix=A_
        if /i "%%j"=="BF" set Source_Prefix=BF_
        if /i "%%j"=="BE" set Source_Prefix=BE_
        if /i "%%j"=="PV" set Source_Prefix=PV_
        if /i "%%j"=="PR1" set Source_Prefix=PR1_
    )
)

if %SpiLock% EQU 1 (
  set IFWI_HEADER_FILE=IFWIHeader\!IFWI_HEADER!_SPILOCK.bin
) else (
  set IFWI_HEADER_FILE=IFWIHeader\!IFWI_HEADER!.bin
)

:: **********************************************************************
:: The Main Stitching Loop
:: **********************************************************************
echo %date%  %time% >>Stitching.log 2>&1
echo %date%  %time%
echo.
for %%i in (%BIOS_Names%) do (

    REM  ----- Do NOT use :: for comments Inside of code blocks() -------
    set BIOS_Rom=%%i
    set BIOS_Name=%%~ni
    set BIOS_Version=!BIOS_Name:~-7,7!

    REM extract PlatformType from BIOS filename
    set Platform_Type=!BIOS_Name:~0,4!

    REM Special treat for BayLake FFD8
    set Temp_Name=!BIOS_Name:~0,7!


    REM Capitalize and validate the Platform_Type
    if /i "!Platform_Type!"=="MNW2" (
        set Platform_Type=MNW2
    ) else (
        echo Error - Unsupported PlatformType: !Platform_Type!
        goto Usage
    )


    REM search BIOS_Name for Arch substring:  either IA32 or X64
    if not "!BIOS_Name!"=="!BIOS_Name:_IA32_=!" (
        set Arch=IA32
    ) else if not "!BIOS_Name!"=="!BIOS_Name:_X64_=!" (
        set Arch=X64
    ) else (
        echo Error:  Could not determine Architecture for !BIOS_Rom!
        goto Usage
    )
    set IFWI_Prefix=!Platform_Type!_IFWI_%Source_Prefix%!Arch!_!!BIOS_Version!

    REM search BIOS_Name for Build_Target substring: either R or D
    if not "!BIOS_Name!"=="!BIOS_Name:_R_=!" (
        set Build_Target=Release
        set IFWI_Prefix=!IFWI_Prefix!_R
    ) else if not "!BIOS_Name!"=="!BIOS_Name:_D_=!" (
        set Build_Target=Debug
        set IFWI_Prefix=!IFWI_Prefix!_D
    ) else (
        echo Error:  Could not determine Build Target for !BIOS_Rom!
        goto Usage
    )

    REM Create a BIOS backup before Stitching
    if %BackupRom% EQU 1 (
        echo Creating backup of original BIOS rom.
        copy /y !BIOS_Rom! !BIOS_Rom!.orig >nul
    )

    echo.  >>Stitching.log
    echo ********** Stitching !BIOS_Rom! **********  >>Stitching.log
    echo.  >>Stitching.log
    echo.
    echo Stitching IFWI for !BIOS_Rom! ...
    echo ---------------------------------------------------------------------------
    echo IFWI  Header: !IFWI_HEADER_FILE!,   SEC version: !SEC_VERSION!,   
    echo BIOS Version: !BIOS_Version!

    echo Platform Type: !Platform_Type!,     IFWI Prefix: %BIOS_ID%
    echo ---------------------------------------------------------------------------

    echo -----------------------------
    echo.
    echo Generating IFWI... %BIOS_ID%.bin
    echo.
    
    copy /b/y !IFWI_HEADER_FILE! + ..\..\Vlv2MiscBinariesPkg\SEC\!SEC_VERSION!\VLV_SEC_REGION.bin + ..\..\Vlv2MiscBinariesPkg\SEC\!SEC_VERSION!\Vacant.bin + !BIOS_Rom! %BIOS_ID%.bin
    echo.
    echo ===========================================================================
)
@echo off

::**********************************************************************
:: end of main loop
::**********************************************************************

echo.
echo  -- All specified ROM files Stitched. --
echo.
goto Exit

:Usage
echo.
echo **************************************************************************************************
echo This Script is used to Stitch together BIOS, GOP Driver, Microcode Patch and TXE FW
echo into a single Integrated Firmware Image (IFWI).
echo.
echo Usage: IFWIStitch.bat [flags] [/B BIOS.ROM] [/C Stitch_Config] [/S IFWI_Suffix]
echo.
echo    This script has NO Required arguments, so that the user can just double click from the GUI.
echo    However, this requires that the BIOS.ROM file name is formatted correctly.
echo.
echo    /nG             Do NOT update the GOP driver.  (applies to all ROM files for this run)
echo    /nV             Do NOT update the VBIOS.       (applies to all ROM files for this run)
echo    /nM             Do NOT update the Microcode.   (applies to all ROM files for this run)
echo    /nB             Do NOT backup BIOS.ROMs. (Default will backup to BIOS.ROM.Orig)
echo.
echo    BIOS.ROM:       A single BIOS ROM file to use for stitching
echo                    (DEFAULT: ALL .ROM files inside the current directory)
echo    Stitch_Config:  Text file containing version info of each FW component
echo                    (DEFAULT: Stitch_Config.txt)
echo    IFWI_Suffix:    Suffix to append to the end of the IFWI filename
echo                    (DEFAULT: YYYY_MM_DD_HHMM)
echo.
echo Examples:
echo    IFIWStitch.bat                                      : Stitch all ROMs with defaults
echo    IFIWStitch.bat /B C:/MyRoms/testBIOS.rom            : Stitch single ROM with defaults
echo    IFIWStitch.bat /B ../testBIOS.rom /S test123        : Stitch single ROM and add custom suffix
echo    IFIWStitch.bat /nM /nB /B testBIOS.rom /S test456   : Stitch single ROM, keep uCode from .rom,
echo                                                          don't create backup, and add custom suffix.
echo ****************************************************************************************************
pause
exit /b 1

:ScriptFail
set exitCode=1

:Exit
echo  -- See Stitching.log for more info. --
echo.
echo %date%  %time%
echo.
if "%Platform_Type%"=="MNW2" (
  echo .
) else (
  echo only support MNW2 for this project!
pause
)
exit /b %exitCode%
EndLocal
