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
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
|
@REM @file
@REM This stand-alone program is typically called by the edksetup.bat file,
@REM however it may be executed directly from the BaseTools project folder
@REM if the file is not executed within a WORKSPACE\BaseTools folder.
@REM
@REM Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.
@REM
@REM This program and the accompanying materials are licensed and made available
@REM under the terms and conditions of the BSD Licensewhich accompanies this
@REM distribution. 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
@REM IMPLIED.
@REM
@echo off
pushd .
@REM ##############################################################
@REM # You should not have to modify anything below this line
@REM #
@if /I "%1"=="-h" goto Usage
@if /I "%1"=="-help" goto Usage
@if /I "%1"=="--help" goto Usage
@if /I "%1"=="/h" goto Usage
@if /I "%1"=="/help" goto Usage
@if /I "%1"=="/?" goto Usage
:loop
@if "%1"=="" goto setup_workspace
@if /I "%1"=="--nt32" (
@REM Ignore --nt32 flag
shift
goto loop
)
@if /I "%1"=="Reconfig" (
shift
set RECONFIG=TRUE
goto loop
)
@if /I "%1"=="Rebuild" (
shift
set REBUILD=TRUE
goto loop
)
@if /I "%1"=="ForceRebuild" (
shift
set FORCE_REBUILD=TRUE
goto loop
)
if "%1"=="" goto setup_workspace
if exist %1 (
if not defined BASE_TOOLS_PATH (
if exist %1\Source set BASE_TOOLS_PATH=%1
shift
goto loop
)
if not defined EDK_TOOLS_PATH (
if exist %1\Bin\Win32 set EDK_TOOLS_PATH=%1
shift
goto loop
)
echo.
echo !!! ERROR !!! Unknown argument, %1 !!!
echo.
goto end
) else (
echo.
echo !!! ERROR !!! Unknown argument, %1 !!!
echo.
goto end
)
goto loop
@REM
@REM Check the required system environment variables
@REM
:setup_workspace
REM
REM check the EDK_TOOLS_PATH
REM
if not defined EDK_TOOLS_PATH goto no_EDK_TOOLS_PATH
if exist %EDK_TOOLS_PATH% goto set_PATH
:no_EDK_TOOLS_PATH
if not defined WORKSPACE (
if defined BASE_TOOLS_PATH (
set EDK_TOOLS_PATH=%BASE_TOOLS_PATH%
goto set_PATH
) else (
echo.
echo !!! ERROR !!! Neither BASE_TOOLS_PATH nor EDK_TOOLS_PATH are set. !!!
echo.
goto end
)
) else (
if exist %WORKSPACE%\BaseTools\Bin (
set EDK_TOOLS_PATH=%WORKSPACE%\BaseTools
goto set_PATH
) else (
echo.
echo !!! ERROR !!! No tools path available. Please set EDK_TOOLS_PATH !!!
echo.
goto end
)
)
:set_PATH
if defined WORKSPACE_TOOLS_PATH goto check_PATH
set PATH=%EDK_TOOLS_PATH%\Bin;%EDK_TOOLS_PATH%\Bin\Win32;%PATH%
set WORKSPACE_TOOLS_PATH=%EDK_TOOLS_PATH%
goto PATH_ok
:check_PATH
if "%EDK_TOOLS_PATH%"=="%WORKSPACE_TOOLS_PATH%" goto PATH_ok
set PATH=%EDK_TOOLS_PATH%\Bin;%EDK_TOOLS_PATH%\Bin\Win32;%PATH%
set WORKSPACE_TOOLS_PATH=%EDK_TOOLS_PATH%
echo Resetting the PATH variable to include the EDK_TOOLS_PATH for this session.
:PATH_ok
echo PATH = %PATH%
echo.
if defined WORKSPACE (
echo WORKSPACE = %WORKSPACE%
)
echo EDK_TOOLS_PATH = %EDK_TOOLS_PATH%
if defined BASE_TOOLS_PATH (
echo BASE_TOOLS_PATH = %BASE_TOOLS_PATH%
)
echo.
REM
REM copy *.template to %WORKSPACE%\Conf
REM
if not defined WORKSPACE (
if defined RECONFIG (
echo.
echo !!! WARNING !!! WORKSPACE environment variable was not set, cannot Reconfig !!!
echo.
)
goto skip_reconfig
)
if NOT exist %WORKSPACE%\Conf (
mkdir %WORKSPACE%\Conf
) else (
if defined RECONFIG (
echo.
echo Over-writing the files in the WORKSPACE\Conf directory
echo using the default template files
echo.
)
)
if NOT exist %WORKSPACE%\Conf\FrameworkDatabase.db (
echo copying ... FrameworkDatabase.template to %WORKSPACE%\Conf\FrameworkDatabase.db
copy %EDK_TOOLS_PATH%\Conf\FrameworkDatabase.template %WORKSPACE%\Conf\FrameworkDatabase.db > nul
) else (
if defined RECONFIG echo over-write ... FrameworkDatabase.template to %WORKSPACE%\Conf\FrameworkDatabase.db
if defined RECONFIG copy /Y %EDK_TOOLS_PATH%\Conf\FrameworkDatabase.template %WORKSPACE%\Conf\FrameworkDatabase.db > nul
)
if NOT exist %WORKSPACE%\Conf\target.txt (
echo copying ... target.template to %WORKSPACE%\Conf\target.txt
if NOT exist %EDK_TOOLS_PATH%\Conf\target.template (
echo Error: target.template is missing at folder %EDK_TOOLS_PATH%\Conf\
)
copy %EDK_TOOLS_PATH%\Conf\target.template %WORKSPACE%\Conf\target.txt > nul
) else (
if defined RECONFIG echo over-write ... target.template to %WORKSPACE%\Conf\target.txt
if defined RECONFIG copy /Y %EDK_TOOLS_PATH%\Conf\target.template %WORKSPACE%\Conf\target.txt > nul
)
if NOT exist %WORKSPACE%\Conf\tools_def.txt (
echo copying ... tools_def.template to %WORKSPACE%\Conf\tools_def.txt
if NOT exist %EDK_TOOLS_PATH%\Conf\tools_def.template (
echo Error: tools_def.template is missing at folder %EDK_TOOLS_PATH%\Conf\
)
copy %EDK_TOOLS_PATH%\Conf\tools_def.template %WORKSPACE%\Conf\tools_def.txt > nul
) else (
if defined RECONFIG echo over-write ... tools_def.template to %WORKSPACE%\Conf\tools_def.txt
if defined RECONFIG copy /Y %EDK_TOOLS_PATH%\Conf\tools_def.template %WORKSPACE%\Conf\tools_def.txt > nul
)
if NOT exist %WORKSPACE%\Conf\build_rule.txt (
echo copying ... build_rule.template to %WORKSPACE%\Conf\build_rule.txt
if NOT exist %EDK_TOOLS_PATH%\Conf\build_rule.template (
echo Error: build_rule.template is missing at folder %EDK_TOOLS_PATH%\Conf\
)
copy %EDK_TOOLS_PATH%\Conf\build_rule.template %WORKSPACE%\Conf\build_rule.txt > nul
) else (
if defined RECONFIG echo over-write ... build_rule.template to %WORKSPACE%\Conf\build_rule.txt
if defined RECONFIG copy /Y %EDK_TOOLS_PATH%\Conf\build_rule.template %WORKSPACE%\Conf\build_rule.txt > nul
)
:skip_reconfig
@REM
@REM Test if we are going to have to do a build
@REM
if defined FORCE_REBUILD goto check_build_environment
if defined REBUILD goto check_build_environment
if not exist "%EDK_TOOLS_PATH%\Bin" goto check_build_environment
IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\BootSectImage.exe" goto check_build_environment
IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\build.exe" goto check_build_environment
IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\EfiLdrImage.exe" goto check_build_environment
IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\EfiRom.exe" goto check_build_environment
IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\GenBootSector.exe" goto check_build_environment
IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\GenFds.exe" goto check_build_environment
IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\GenFfs.exe" goto check_build_environment
IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\GenFv.exe" goto check_build_environment
IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\GenFw.exe" goto check_build_environment
IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\GenPage.exe" goto check_build_environment
IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\GenSec.exe" goto check_build_environment
IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\GenVtf.exe" goto check_build_environment
IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\MigrationMsa2Inf.exe" goto check_build_environment
IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\Split.exe" goto check_build_environment
IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\TargetTool.exe" goto check_build_environment
IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\TianoCompress.exe" goto check_build_environment
IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\Trim.exe" goto check_build_environment
IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\VfrCompile.exe" goto check_build_environment
IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\Fpd2Dsc.exe" goto check_build_environment
IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\VolInfo.exe" goto check_build_environment
goto end
:check_build_environment
if not defined FORCE_REBUILD (
echo.
echo Rebuilding of tools is not required. Binaries of the latest,
echo tested versions of the tools have been tested and included in the
echo EDK II repository.
echo.
echo If you really want to build the tools, use the ForceRebuild option.
echo.
goto end
)
if not defined BASE_TOOLS_PATH (
if not exist "Source\C\Makefile" (
if not exist "%EDK_TOOLS_PATH%\Source\C\Makefile" goto no_source_files
set BASE_TOOLS_PATH=%EDK_TOOLS_PATH%
) else (
set BASE_TOOLS_PATH=%CD%
)
)
set PATH=%BASE_TOOLS_PATH%\Bin\Win32;%PATH%
set PYTHONPATH=%BASE_TOOLS_PATH%\Source\Python
if not defined PYTHON_HOME (
if defined PYTHONHOME (
set PYTHON_HOME=%PYTHONHOME%
) else (
echo.
echo !!! ERROR !!! PYTHON_HOME is required to build or execute the tools, please set it. !!!
echo.
goto end
)
)
@REM We have Python, now test for FreezePython application
if not defined PYTHON_FREEZER_PATH (
@REM see if we can find FreezePython.ex
if exist "%PYTHON_HOME%\Tools\cx_Freeze-3.0.3\FreezePython.exe" (
set PYTHON_FREEZER_PATH=%PYTHON_HOME%\Tools\cx_Freeze-3.0.3
)
if exist "%PYTHON_HOME%\Tools\cx_Freeze\FreezePython.exe" (
set PYTHON_FREEZER_PATH=%PYTHON_HOME%\Tools\cx_Freeze
)
if exist "C:\cx_Freeze\FreezePython.exe" (
set PYTHON_FREEZER_PATH=C:\cx_Freeze
)
if exist "C:\cx_Freeze-3.0.3" (
set PYTHON_FREEZER_PATH=C:\cx_Freeze-3.0.3
)
if not defined PYTHON_FREEZER_PATH (
echo.
echo !!! WARNING !!! Will not be able to compile Python programs to .exe
echo Will setup environment to run Python scripts directly.
echo.
set PYTHONPATH=%BASE_TOOLS_PATH%\Source\Python
set PATH=%PYTHONPATH%\build;%PYTHONPATH%\GenFds;%PYTHONPATH%\Trim;%PATH%
set PATHEXT=%PATHEXT%;.py
)
)
echo BASE_TOOLS_PATH = %BASE_TOOLS_PATH%
echo PYTHON_PATH = %PYTHON_PATH%
echo PYTHON_FREEZER_PATH = %PYTHON_FREEZER_PATH%
echo.
if defined VCINSTALLDIR goto VisualStudioAvailable
if defined VS71COMNTOOLS (
call "%VS71COMNTOOLS%\vsvars32.bat"
) else (
if defined VS80COMNTOOLS (
call "%VS80COMNTOOLS%\vsvars32.bat"
) else (
echo.
echo !!! ERROR !!!! Cannot find Visual Studio, required to build C tools !!!
echo.
goto end
)
)
:VisualStudioAvailable
if defined FORCE_REBUILD goto CleanAndBuild
goto IncrementalBuild
:CleanAndBuild
pushd .
cd %BASE_TOOLS_PATH%
call nmake cleanall
del /f /q %BASE_TOOLS_PATH%\Bin\Win32\*.*
popd
@REM Let CleanAndBuild fall through to IncrementalBuild
:IncrementalBuild
pushd .
cd %BASE_TOOLS_PATH%
call nmake c
popd
if defined PYTHON_FREEZER_PATH (
echo BUILDING PYTHON TOOLS
pushd .
cd %BASE_TOOLS_PATH%
call nmake python
popd
) else (
echo.
echo !!! WARNING !!! Cannot make executable from Python code, executing python scripts instead !!!
echo.
)
goto end
:no_source_files
echo.
echo !!! ERROR !!! Cannot build BaseTools applications - no source directory located !!!
echo.
goto end
:Usage
echo.
echo Usage: "%0 [-h | -help | --help | /h | /help | /?] [ Rebuild | ForceRebuild ] [Reconfig] [base_tools_path [edk_tools_path]]"
echo.
echo base_tools_path BaseTools project path, BASE_TOOLS_PATH will be set to this path.
echo edk_tools_path EDK_TOOLS_PATH will be set to this path.
echo Rebuild If sources are available perform an Incremental build, only
echo build those updated tools.
echo ForceRebuild If sources are available, rebuild all tools regardless of
echo whether they have been updated or not.
echo Reconfig Reinstall target.txt, tools_def.txt and build_rule.txt.
echo.
:end
set REBUILD=
set FORCE_REBUILD=
set RECONFIG=
popd
@echo on
|