summaryrefslogtreecommitdiff
path: root/Platform/BroxtonPlatformPkg/Common/Tools/Stitch/IFWIStitch_Simple.bat
blob: 134807ead1208fa24b29c024cb42eee4fb045355 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
@echo off
SetLocal EnableDelayedExpansion EnableExtensions

:: Set script defaults
set exitCode=0

copy /y nul Stitching.log >nul

:: Set tool env
set WORKSPACE=%CD%
set CORE_TOOLS_PATH=%WORKSPACE%\..\..\..\..\..\BaseTools\Bin\Win32
if %WORKSPACE:~-1%==\ set WORKSPACE=%WORKSPACE:~0,-1%
PATH=%PATH%;%WORKSPACE%\Tools;%WORKSPACE%\Tools\VLV_Merge_Tools;%WORKSPACE%\;%CORE_TOOLS_PATH%

:: 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 inputs
:: **********************************************************************
if "%~1"=="?"       goto Usage
if "%~1"=="/?"      goto Usage
if /i "%~1"=="Help" goto Usage

set FspWrapper=FALSE
set FabId=B
set BoardId=MN

if /i "%~2"=="B" (
    set FabId=B
)

if /i "%~2"=="A" (
    set FabId=A
)

if /i "%~3"=="MN" (
    set BoardId=MN
)

if /i "%~3"=="BG" (
    set BoardId=BG
)

if /i "%~3"=="MX" (
    set BoardId=MX
)

:OptLoop1

if /i "%~1"=="/FspW" (
    echo FspW enabled..
    set FspWrapper=TRUE
    shift
    goto OptLoop1
)

::Require first parameter
if not exist %~1 echo BIOS [%~1] not found. & goto Usage
set BIOS_Names=%~1
shift

:: **********************************************************************
:: Stitching Init
:: **********************************************************************
echo %date%  %time% >>Stitching.log 2>&1
echo %date%  %time%
echo.
for %%i in (%BIOS_Names%) do (
    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 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_Name!
    goto Usage
)

set IFWI_Prefix=!Platform_Type!_IFWI_FSPW_!Arch!

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
    set IFWI_Version=!IFWI_Prefix!_%IFWI_Suffix%
) else if not "!BIOS_Name!"=="!BIOS_Name:_D_=!" (
    set Build_Target=Debug
    set IFWI_Prefix=!IFWI_Prefix!_D
    set IFWI_Version=!IFWI_Prefix!_%IFWI_Suffix%
) else (
    echo Error:  Could not determine Build Target for !BIOS_Name!
    goto Usage
)

if /i "!Platform_Type!"=="MINN" (
    set Platform_Type=MINN
) else if /i "!Platform_Type!"=="BENS" (
    set Platform_Type=BENS
) else (
    echo Error - Unsupported PlatformType: !Platform_Type!
    goto Usage
)

:: rd /s /q %BIOS_Names%  >>Stitching.log

pushd %BIOS_Names%
copy /y /b FVIBBL.Fv IBBL.Fv
copy /y /b FVIBBM.fv+FSP_M.fv IBB.Fv
copy /y /b FSP_S.fv+FVIBBR.fv+FVOBB.Fv+FVOBBX.Fv+FVOBBY.Fv OBB.Fv
popd

set IFWI_Name=!IFWI_Prefix!_%IFWI_Suffix%

echo.
echo ------------------------------------------
echo.
echo   Generating SPI Image...
mkdir BIOS_COMPONENTS
copy /y /b %BIOS_Names%\IBBL.Fv .\BIOS_COMPONENTS
copy /y /b %BIOS_Names%\IBB.Fv .\BIOS_COMPONENTS
copy /y /b %BIOS_Names%\OBB.Fv .\BIOS_COMPONENTS
copy /y /b %BIOS_Names%\NvStorage.Fv .\BIOS_COMPONENTS

if %BoardId%==BG (
  if %FabId%==B (
    copy /y /b ..\..\Binaries\IFWI\BensonGlacier\FAB_B\SpiChunk1.bin .
    copy /y /b ..\..\Binaries\IFWI\BensonGlacier\FAB_B\SpiChunk2.bin .
    copy /y /b ..\..\Binaries\IFWI\BensonGlacier\FAB_B\SpiChunk3.bin .
  ) else (
    copy /y /b ..\..\Binaries\IFWI\BensonGlacier\FAB_A\SpiChunk1.bin .
    copy /y /b ..\..\Binaries\IFWI\BensonGlacier\FAB_A\SpiChunk2.bin .
    copy /y /b ..\..\Binaries\IFWI\BensonGlacier\FAB_A\SpiChunk3.bin .  
  )  
  copy /y /b SpiChunk1.bin+.\BIOS_COMPONENTS\IBBL.Fv+.\BIOS_COMPONENTS\IBB.Fv+SpiChunk2.bin+.\BIOS_COMPONENTS\OBB.Fv+.\BIOS_COMPONENTS\NvStorage.Fv+SpiChunk3.bin spi_out.bin
) else if %BoardId%==MN (
         if %FabId%==B (
           copy /y /b ..\..\Binaries\IFWI\MinnowBoard3\FAB_B\SpiChunk1.bin .
           copy /y /b ..\..\Binaries\IFWI\MinnowBoard3\FAB_B\SpiChunk2.bin .
           copy /y /b ..\..\Binaries\IFWI\MinnowBoard3\FAB_B\SpiChunk3.bin .
           copy /y /b SpiChunk1.bin+.\BIOS_COMPONENTS\IBBL.Fv+.\BIOS_COMPONENTS\IBB.Fv+SpiChunk2.bin+.\BIOS_COMPONENTS\OBB.Fv+.\BIOS_COMPONENTS\NvStorage.Fv+SpiChunk3.bin spi_out.bin
         ) else (
           copy /y /b ..\..\Binaries\IFWI\MinnowBoard3\FAB_A\SpiChunk1.bin .
           copy /y /b ..\..\Binaries\IFWI\MinnowBoard3\FAB_A\SpiChunk2.bin .
           copy /y /b ..\..\Binaries\IFWI\MinnowBoard3\FAB_A\SpiChunk3.bin .
           copy /y /b SpiChunk1.bin+.\BIOS_COMPONENTS\IBBL.Fv+.\BIOS_COMPONENTS\IBB.Fv+SpiChunk2.bin+.\BIOS_COMPONENTS\OBB.Fv+.\BIOS_COMPONENTS\NvStorage.Fv+SpiChunk3.bin spi_out.bin
         )
) else if %BoardId%==MX (
           copy /y /b ..\..\Binaries\IFWI\MinnowBoard3Next\FAB_A\SpiChunk1.bin .
           copy /y /b ..\..\Binaries\IFWI\MinnowBoard3Next\FAB_A\SpiChunk2.bin .
           copy /y /b ..\..\Binaries\IFWI\MinnowBoard3Next\FAB_A\SpiChunk3.bin .
           copy /y /b SpiChunk1.bin+.\BIOS_COMPONENTS\IBBL.Fv+.\BIOS_COMPONENTS\IBB.Fv+SpiChunk2.bin+.\BIOS_COMPONENTS\OBB.Fv+.\BIOS_COMPONENTS\NvStorage.Fv+SpiChunk3.bin spi_out.bin
)
move /y spi_out.bin %BIOS_ID%.bin  >> Stitching.log

if !ERRORLEVEL! NEQ 0 (
  echo. & echo  -- Error during stitching ^^!  >>Stitching.log
  goto ScriptFail
)

echo Stitched successfully      >>Stitching.log
echo  ***  Stitched successfully  ***
echo.
echo  ----------  IFWI_Stitch Complete  ----------
goto Exit


:Usage
echo.
echo **************************************************************************************************
echo.
echo Usage: IFWIStitch_Simple.bat <BIOS Name>
echo.
echo ****************************************************************************************************
exit /b 1

:ScriptFail
set exitCode=1
copy Stitching.log ..\Stitching.log
echo.

:Exit
echo.
echo  --- See  'Stitching.log'  for more info. ---
echo.
echo  %date%  %time%
echo.
exit /b %exitCode%
EndLocal