blob: f9112a3b32eeca91eaf9e45b50f8a20e97e50ce0 [file] [log] [blame]
lhauch8014e7c2008-02-22 16:31:23 +00001@REM @file
2@REM This stand-alone program is typically called by the edksetup.bat file,
3@REM however it may be executed directly from the BaseTools project folder
4@REM if the file is not executed within a WORKSPACE\BaseTools folder.
jljusten07a756b2007-10-17 01:54:36 +00005@REM
lhauch8014e7c2008-02-22 16:31:23 +00006@REM Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
7@REM
8@REM This program and the accompanying materials are licensed and made available
9@REM under the terms and conditions of the BSD Licensewhich accompanies this
10@REM distribution. The full text of the license may be found at:
11@REM http://opensource.org/licenses/bsd-license.php
jljusten07a756b2007-10-17 01:54:36 +000012@REM
13@REM THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
lhauch8014e7c2008-02-22 16:31:23 +000014@REM WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR
15@REM IMPLIED.
jljusten07a756b2007-10-17 01:54:36 +000016@REM
17
18@echo off
lhauch8014e7c2008-02-22 16:31:23 +000019pushd .
jljusten07a756b2007-10-17 01:54:36 +000020
lhauch8014e7c2008-02-22 16:31:23 +000021@REM ##############################################################
22@REM # You should not have to modify anything below this line
23@REM #
jljusten07a756b2007-10-17 01:54:36 +000024
lhauch8014e7c2008-02-22 16:31:23 +000025@if /I "%1"=="-h" goto Usage
26@if /I "%1"=="-help" goto Usage
27@if /I "%1"=="--help" goto Usage
28@if /I "%1"=="/h" goto Usage
29@if /I "%1"=="/help" goto Usage
30@if /I "%1"=="/?" goto Usage
jljusten07a756b2007-10-17 01:54:36 +000031
jljusten07a756b2007-10-17 01:54:36 +000032
lhauch8014e7c2008-02-22 16:31:23 +000033:loop
34 @if "%1"=="" goto setup_workspace
35 @if /I "%1"=="--nt32" (
36 @REM Ignore --nt32 flag
37 shift
38 goto loop
39 )
40 @if /I "%1"=="Reconfig" (
41 shift
42 set RECONFIG=TRUE
43 goto loop
44 )
45 @if /I "%1"=="Rebuild" (
46 shift
47 set REBUILD=TRUE
48 goto loop
49 )
50 @if /I "%1"=="ForceRebuild" (
51 shift
52 set FORCE_REBUILD=TRUE
53 goto loop
54 )
55 if "%1"=="" goto setup_workspace
56 if exist %1 (
57 if not defined BASE_TOOLS_PATH (
58 if exist %1\Source set BASE_TOOLS_PATH=%1
59 shift
60 goto loop
61 )
62 if not defined EDK_TOOLS_PATH (
63 if exist %1\Bin\Win32 set EDK_TOOLS_PATH=%1
64 shift
65 goto loop
66 )
67 echo.
68 echo !!! ERROR !!! Unknown argument, %1 !!!
69 echo.
70 goto end
71 ) else (
72 echo.
73 echo !!! ERROR !!! Unknown argument, %1 !!!
74 echo.
75 goto end
76 )
77 goto loop
78
79
80@REM
81@REM Check the required system environment variables
82@REM
jljusten07a756b2007-10-17 01:54:36 +000083
84:setup_workspace
lhauch8014e7c2008-02-22 16:31:23 +000085 REM
86 REM check the EDK_TOOLS_PATH
87 REM
88 if not defined EDK_TOOLS_PATH goto no_EDK_TOOLS_PATH
89 if exist %EDK_TOOLS_PATH% goto set_PATH
jljusten07a756b2007-10-17 01:54:36 +000090
lhauch8014e7c2008-02-22 16:31:23 +000091:no_EDK_TOOLS_PATH
92 if not defined WORKSPACE (
93 if defined BASE_TOOLS_PATH (
94 set EDK_TOOLS_PATH=%BASE_TOOLS_PATH%
95 goto set_PATH
96 ) else (
97 echo.
98 echo !!! ERROR !!! Neither BASE_TOOLS_PATH nor EDK_TOOLS_PATH are set. !!!
99 echo.
100 goto end
101 )
102 ) else (
103 if exist %WORKSPACE%\BaseTools\Bin (
104 set EDK_TOOLS_PATH=%WORKSPACE%\BaseTools
105 goto set_PATH
106 ) else (
107 echo.
108 echo !!! ERROR !!! No tools path available. Please set EDK_TOOLS_PATH !!!
109 echo.
110 goto end
111 )
112 )
113
114:set_PATH
115 if defined WORKSPACE_TOOLS_PATH goto check_PATH
116 set PATH=%EDK_TOOLS_PATH%\Bin;%EDK_TOOLS_PATH%\Bin\Win32;%PATH%
117 set WORKSPACE_TOOLS_PATH=%EDK_TOOLS_PATH%
118 goto PATH_ok
119
120:check_PATH
121 if "%EDK_TOOLS_PATH%"=="%WORKSPACE_TOOLS_PATH%" goto PATH_ok
122 set PATH=%EDK_TOOLS_PATH%\Bin;%EDK_TOOLS_PATH%\Bin\Win32;%PATH%
123 set WORKSPACE_TOOLS_PATH=%EDK_TOOLS_PATH%
124 echo Resetting the PATH variable to include the EDK_TOOLS_PATH for this session.
125
126:PATH_ok
127 echo PATH = %PATH%
jljusten07a756b2007-10-17 01:54:36 +0000128 echo.
lhauch8014e7c2008-02-22 16:31:23 +0000129 if defined WORKSPACE (
130 echo WORKSPACE = %WORKSPACE%
131 )
132 echo EDK_TOOLS_PATH = %EDK_TOOLS_PATH%
133 if defined BASE_TOOLS_PATH (
lhauch9cf974f2008-06-11 22:01:53 +0000134 echo BASE_TOOLS_PATH = %BASE_TOOLS_PATH%
lhauch8014e7c2008-02-22 16:31:23 +0000135 )
jljusten07a756b2007-10-17 01:54:36 +0000136 echo.
jljusten07a756b2007-10-17 01:54:36 +0000137
138REM
139REM copy *.template to %WORKSPACE%\Conf
140REM
lhauch8014e7c2008-02-22 16:31:23 +0000141if not defined WORKSPACE (
142 if defined RECONFIG (
143 echo.
144 echo !!! WARNING !!! WORKSPACE environment variable was not set, cannot Reconfig !!!
145 echo.
146 )
147 goto skip_reconfig
148)
149
jljusten07a756b2007-10-17 01:54:36 +0000150if NOT exist %WORKSPACE%\Conf (
151 mkdir %WORKSPACE%\Conf
152) else (
lhauch8014e7c2008-02-22 16:31:23 +0000153 if defined RECONFIG (
jljusten07a756b2007-10-17 01:54:36 +0000154 echo.
155 echo Over-writing the files in the WORKSPACE\Conf directory
156 echo using the default template files
157 echo.
158 )
159)
lhauch8014e7c2008-02-22 16:31:23 +0000160
jljusten07a756b2007-10-17 01:54:36 +0000161if NOT exist %WORKSPACE%\Conf\FrameworkDatabase.db (
162 echo copying ... FrameworkDatabase.template to %WORKSPACE%\Conf\FrameworkDatabase.db
163 copy %EDK_TOOLS_PATH%\Conf\FrameworkDatabase.template %WORKSPACE%\Conf\FrameworkDatabase.db > nul
164) else (
lhauch8014e7c2008-02-22 16:31:23 +0000165 if defined RECONFIG copy /Y %EDK_TOOLS_PATH%\Conf\FrameworkDatabase.template %WORKSPACE%\Conf\FrameworkDatabase.db > nul
jljusten07a756b2007-10-17 01:54:36 +0000166)
lhauch8014e7c2008-02-22 16:31:23 +0000167
jljusten07a756b2007-10-17 01:54:36 +0000168if NOT exist %WORKSPACE%\Conf\target.txt (
169 echo copying ... target.template to %WORKSPACE%\Conf\target.txt
170 copy %EDK_TOOLS_PATH%\Conf\target.template %WORKSPACE%\Conf\target.txt > nul
171) else (
lhauch8014e7c2008-02-22 16:31:23 +0000172 if defined RECONFIG copy /Y %EDK_TOOLS_PATH%\Conf\target.template %WORKSPACE%\Conf\target.txt > nul
jljusten07a756b2007-10-17 01:54:36 +0000173)
lhauch8014e7c2008-02-22 16:31:23 +0000174
jljusten07a756b2007-10-17 01:54:36 +0000175if NOT exist %WORKSPACE%\Conf\tools_def.txt (
176 echo copying ... tools_def.template to %WORKSPACE%\Conf\tools_def.txt
177 copy %EDK_TOOLS_PATH%\Conf\tools_def.template %WORKSPACE%\Conf\tools_def.txt > nul
178) else (
lhauch8014e7c2008-02-22 16:31:23 +0000179 if defined RECONFIG copy /Y %EDK_TOOLS_PATH%\Conf\tools_def.template %WORKSPACE%\Conf\tools_def.txt > nul
jljusten07a756b2007-10-17 01:54:36 +0000180)
lhauch8014e7c2008-02-22 16:31:23 +0000181
jljusten07a756b2007-10-17 01:54:36 +0000182if NOT exist %WORKSPACE%\Conf\build_rule.txt (
183 echo copying ... build_rule.template to %WORKSPACE%\Conf\build_rule.txt
184 copy %EDK_TOOLS_PATH%\Conf\build_rule.template %WORKSPACE%\Conf\build_rule.txt > nul
185) else (
lhauch8014e7c2008-02-22 16:31:23 +0000186 if defined RECONFIG copy /Y %EDK_TOOLS_PATH%\Conf\build_rule.template %WORKSPACE%\Conf\build_rule.txt > nul
jljusten07a756b2007-10-17 01:54:36 +0000187)
188
lhauch8014e7c2008-02-22 16:31:23 +0000189:skip_reconfig
jljusten07a756b2007-10-17 01:54:36 +0000190
lhauch8014e7c2008-02-22 16:31:23 +0000191@REM
192@REM Test if we are going to have to do a build
193@REM
194if defined FORCE_REBUILD goto check_build_environment
195if defined REBUILD goto check_build_environment
196if not exist "%EDK_TOOLS_PATH%\Bin" goto check_build_environment
197
198IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\BootSectImage.exe" goto check_build_environment
199IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\build.exe" goto check_build_environment
200IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\EfiLdrImage.exe" goto check_build_environment
201IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\EfiRom.exe" goto check_build_environment
202IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\GenBootSector.exe" goto check_build_environment
203IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\GenFds.exe" goto check_build_environment
204IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\GenFfs.exe" goto check_build_environment
205IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\GenFv.exe" goto check_build_environment
206IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\GenFw.exe" goto check_build_environment
207IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\GenPage.exe" goto check_build_environment
208IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\GenSec.exe" goto check_build_environment
209IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\GenVtf.exe" goto check_build_environment
210IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\MigrationMsa2Inf.exe" goto check_build_environment
211IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\Split.exe" goto check_build_environment
212IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\TargetTool.exe" goto check_build_environment
213IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\TianoCompress.exe" goto check_build_environment
214IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\Trim.exe" goto check_build_environment
215IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\VfrCompile.exe" goto check_build_environment
216IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\Fpd2Dsc.exe" goto check_build_environment
217IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\VolInfo.exe" goto check_build_environment
218
jljusten07a756b2007-10-17 01:54:36 +0000219goto end
220
lhauch8014e7c2008-02-22 16:31:23 +0000221:check_build_environment
222
223 if not defined FORCE_REBUILD (
224 echo.
225 echo Rebuilding of tools is not required. Binaries of the latest,
226 echo tested versions of the tools have been tested and included in the
227 echo EDK II repository.
228 echo.
lhauchad42b172008-02-22 16:37:53 +0000229 echo If you really want to build the tools, use the ForceRebuild option.
lhauch8014e7c2008-02-22 16:31:23 +0000230 echo.
231 goto end
232 )
233
234 if not defined BASE_TOOLS_PATH (
235 if not exist "Source\C\Makefile" (
236 if not exist "%EDK_TOOLS_PATH%\Source\C\Makefile" goto no_source_files
237 set BASE_TOOLS_PATH=%EDK_TOOLS_PATH%
238 ) else (
239 set BASE_TOOLS_PATH=%CD%
240 )
241 )
242 set PATH=%BASE_TOOLS_PATH%\Bin\Win32;%PATH%
243
244 set PYTHONPATH=%BASE_TOOLS_PATH%\Source\Python
245
246 if not defined PYTHON_HOME (
247 if defined PYTHONHOME (
248 set PYTHON_HOME=%PYTHONHOME%
249 ) else (
250 echo.
251 echo !!! ERROR !!! PYTHON is required to build or execute the tools !!!
252 echo.
253 goto end
254 )
255 )
256
257 @REM We have Python, now test for FreezePython application
258 if not defined PYTHON_FREEZER_PATH (
259 @REM see if we can find FreezePython.ex
260 if exist "%PYTHON_HOME%\Tools\cx_Freeze-3.0.3\FreezePython.exe" (
261 set PYTHON_FREEZER_PATH=%PYTHON_HOME%\Tools\cx_Freeze-3.0.3
262 )
263 if exist "%PYTHON_HOME%\Tools\cx_Freeze\FreezePython.exe" (
264 set PYTHON_FREEZER_PATH=%PYTHON_HOME%\Tools\cx_Freeze
265 )
266 if exist "C:\cx_Freeze\FreezePython.exe" (
267 set PYTHON_FREEZER_PATH=C:\cx_Freeze
268 )
269 if exist "C:\cx_Freeze-3.0.3" (
270 set PYTHON_FREEZER_PATH=C:\cx_Freeze-3.0.3
271 )
272 if not defined PYTHON_FREEZER_PATH (
273 echo.
274 echo !!! WARNING !!! Will not be able to compile Python programs to .exe
275 echo Will setup environment to run Python scripts directly.
276 echo.
277 set PYTHONPATH=%BASE_TOOLS_PATH%\Source\Python
278 set PATH=%PYTHONPATH%\build;%PYTHONPATH%\GenFds;%PYTHONPATH%\Trim;%PATH%
279 set PATHEXT=%PATHEXT%;.py
280 )
281 )
282
283 echo BASE_TOOLS_PATH = %BASE_TOOLS_PATH%
284 echo PYTHON_PATH = %PYTHON_PATH%
285 echo PYTHON_FREEZER_PATH = %PYTHON_FREEZER_PATH%
286 echo.
287
288 if defined VCINSTALLDIR goto VisualStudioAvailable
289 if defined VS71COMNTOOLS (
290 call "%VS71COMNTOOLS%\vsvars32.bat"
291 ) else (
292 if defined VS80COMNTOOLS (
293 call "%VS80COMNTOOLS%\vsvars32.bat"
294 ) else (
295 echo.
296 echo !!! ERROR !!!! Cannot find Visual Studio, required to build C tools !!!
297 echo.
298 goto end
299 )
300 )
301
302:VisualStudioAvailable
303 if defined FORCE_REBUILD goto CleanAndBuild
304 goto IncrementalBuild
305
306:CleanAndBuild
307 pushd .
308 cd %BASE_TOOLS_PATH%
309 call nmake cleanall
310 del /f /q %BASE_TOOLS_PATH%\Bin\Win32\*.*
311 popd
312 @REM Let CleanAndBuild fall through to IncrementalBuild
313
314
315:IncrementalBuild
316 pushd .
317 cd %BASE_TOOLS_PATH%
318 call nmake c
319 popd
320
321 if defined PYTHON_FREEZER_PATH (
322 echo BUILDING PYTHON TOOLS
323 pushd .
324 cd %BASE_TOOLS_PATH%
325 call nmake python
326 popd
327 ) else (
328 echo.
329 echo !!! WARNING !!! Cannot make executable from Python code, executing python scripts instead !!!
330 echo.
331 )
332 goto end
333
334
335:no_source_files
336 echo.
337 echo !!! ERROR !!! Cannot build BaseTools applications - no source directory located !!!
338 echo.
339 goto end
340
341:Usage
342 echo.
343 echo Usage: "%0 [-h | -help | --help | /h | /help | /?] [ Rebuild | ForceRebuild ] [Reconfig] [base_tools_path [edk_tools_path]]"
344 echo.
345 echo base_tools_path BaseTools project path, BASE_TOOLS_PATH will be set to this path.
346 echo edk_tools_path EDK_TOOLS_PATH will be set to this path.
347 echo Rebuild If sources are available perform an Incremental build, only
348 echo build those updated tools.
349 echo ForceRebuild If sources are available, rebuild all tools regardless of
350 echo whether they have been updated or not.
351 echo Reconfig Reinstall target.txt, tools_def.txt and build_rule.txt.
jljusten07a756b2007-10-17 01:54:36 +0000352echo.
353
354:end
lhauch8014e7c2008-02-22 16:31:23 +0000355set REBUILD=
356set FORCE_REBUILD=
357set RECONFIG=
358popd
359
jljusten07a756b2007-10-17 01:54:36 +0000360@echo on
361