]> git.proxmox.com Git - mirror_edk2.git/blob - BaseTools/toolsetup.bat
CorebootPayloadPkg: Use extra braces to prevent gcc compile fail
[mirror_edk2.git] / BaseTools / toolsetup.bat
1 @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.
5 @REM
6 @REM Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
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 License which accompanies this
10 @REM distribution. The full text of the license may be found at:
11 @REM http://opensource.org/licenses/bsd-license.php
12 @REM
13 @REM THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
14 @REM WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR
15 @REM IMPLIED.
16 @REM
17
18 @echo off
19 pushd .
20
21 @REM ##############################################################
22 @REM # You should not have to modify anything below this line
23 @REM #
24
25 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
31
32
33 :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
83
84 :setup_workspace
85 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
90
91 :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%
128 echo.
129 if defined WORKSPACE (
130 echo WORKSPACE = %WORKSPACE%
131 )
132 echo EDK_TOOLS_PATH = %EDK_TOOLS_PATH%
133 if defined BASE_TOOLS_PATH (
134 echo BASE_TOOLS_PATH = %BASE_TOOLS_PATH%
135 )
136 echo.
137
138 REM
139 REM copy *.template to %WORKSPACE%\Conf
140 REM
141 if 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
150 if NOT exist %WORKSPACE%\Conf (
151 mkdir %WORKSPACE%\Conf
152 ) else (
153 if defined RECONFIG (
154 echo.
155 echo Over-writing the files in the WORKSPACE\Conf directory
156 echo using the default template files
157 echo.
158 )
159 )
160
161 if NOT exist %WORKSPACE%\Conf\target.txt (
162 echo copying ... target.template to %WORKSPACE%\Conf\target.txt
163 if NOT exist %EDK_TOOLS_PATH%\Conf\target.template (
164 echo Error: target.template is missing at folder %EDK_TOOLS_PATH%\Conf\
165 )
166 copy %EDK_TOOLS_PATH%\Conf\target.template %WORKSPACE%\Conf\target.txt > nul
167 ) else (
168 if defined RECONFIG echo over-write ... target.template to %WORKSPACE%\Conf\target.txt
169 if defined RECONFIG copy /Y %EDK_TOOLS_PATH%\Conf\target.template %WORKSPACE%\Conf\target.txt > nul
170 )
171
172 if NOT exist %WORKSPACE%\Conf\tools_def.txt (
173 echo copying ... tools_def.template to %WORKSPACE%\Conf\tools_def.txt
174 if NOT exist %EDK_TOOLS_PATH%\Conf\tools_def.template (
175 echo Error: tools_def.template is missing at folder %EDK_TOOLS_PATH%\Conf\
176 )
177 copy %EDK_TOOLS_PATH%\Conf\tools_def.template %WORKSPACE%\Conf\tools_def.txt > nul
178 ) else (
179 if defined RECONFIG echo over-write ... tools_def.template to %WORKSPACE%\Conf\tools_def.txt
180 if defined RECONFIG copy /Y %EDK_TOOLS_PATH%\Conf\tools_def.template %WORKSPACE%\Conf\tools_def.txt > nul
181 )
182
183 if NOT exist %WORKSPACE%\Conf\build_rule.txt (
184 echo copying ... build_rule.template to %WORKSPACE%\Conf\build_rule.txt
185 if NOT exist %EDK_TOOLS_PATH%\Conf\build_rule.template (
186 echo Error: build_rule.template is missing at folder %EDK_TOOLS_PATH%\Conf\
187 )
188 copy %EDK_TOOLS_PATH%\Conf\build_rule.template %WORKSPACE%\Conf\build_rule.txt > nul
189 ) else (
190 if defined RECONFIG echo over-write ... build_rule.template to %WORKSPACE%\Conf\build_rule.txt
191 if defined RECONFIG copy /Y %EDK_TOOLS_PATH%\Conf\build_rule.template %WORKSPACE%\Conf\build_rule.txt > nul
192 )
193
194 :skip_reconfig
195
196 @REM
197 @REM Test if we are going to have to do a build
198 @REM
199 if defined FORCE_REBUILD goto check_build_environment
200 if defined REBUILD goto check_build_environment
201 if not exist "%EDK_TOOLS_PATH%\Bin" goto check_build_environment
202
203 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\BootSectImage.exe" goto check_build_environment
204 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\build.exe" goto check_build_environment
205 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\EfiLdrImage.exe" goto check_build_environment
206 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\EfiRom.exe" goto check_build_environment
207 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\GenBootSector.exe" goto check_build_environment
208 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\GenFds.exe" goto check_build_environment
209 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\GenFfs.exe" goto check_build_environment
210 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\GenFv.exe" goto check_build_environment
211 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\GenFw.exe" goto check_build_environment
212 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\GenPage.exe" goto check_build_environment
213 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\GenSec.exe" goto check_build_environment
214 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\GenVtf.exe" goto check_build_environment
215 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\MigrationMsa2Inf.exe" goto check_build_environment
216 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\Split.exe" goto check_build_environment
217 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\TargetTool.exe" goto check_build_environment
218 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\TianoCompress.exe" goto check_build_environment
219 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\Trim.exe" goto check_build_environment
220 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\VfrCompile.exe" goto check_build_environment
221 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\Fpd2Dsc.exe" goto check_build_environment
222 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\VolInfo.exe" goto check_build_environment
223
224 goto end
225
226 :check_build_environment
227
228 if not defined FORCE_REBUILD (
229 echo.
230 echo Rebuilding of tools is not required. Binaries of the latest,
231 echo tested versions of the tools have been tested and included in the
232 echo EDK II repository.
233 echo.
234 echo If you really want to build the tools, use the ForceRebuild option.
235 echo.
236 goto end
237 )
238
239 if not defined BASE_TOOLS_PATH (
240 if not exist "Source\C\Makefile" (
241 if not exist "%EDK_TOOLS_PATH%\Source\C\Makefile" goto no_source_files
242 set BASE_TOOLS_PATH=%EDK_TOOLS_PATH%
243 ) else (
244 set BASE_TOOLS_PATH=%CD%
245 )
246 )
247 set PATH=%BASE_TOOLS_PATH%\Bin\Win32;%PATH%
248
249 set BASETOOLS_PYTHON_SOURCE=%BASE_TOOLS_PATH%\Source\Python
250 set PYTHONPATH=%BASETOOLS_PYTHON_SOURCE%;%PYTHONPATH%
251
252 if not defined PYTHON_HOME (
253 if defined PYTHONHOME (
254 set PYTHON_HOME=%PYTHONHOME%
255 ) else (
256 echo.
257 echo !!! ERROR !!! PYTHON_HOME is required to build or execute the tools, please set it. !!!
258 echo.
259 goto end
260 )
261 )
262
263 @REM We have Python, now test for FreezePython application
264 if not defined PYTHON_FREEZER_PATH (
265 @REM see if we can find FreezePython.ex
266 if exist "%PYTHON_HOME%\Tools\cx_Freeze-3.0.3\FreezePython.exe" (
267 set PYTHON_FREEZER_PATH=%PYTHON_HOME%\Tools\cx_Freeze-3.0.3
268 )
269 if exist "%PYTHON_HOME%\Tools\cx_Freeze\FreezePython.exe" (
270 set PYTHON_FREEZER_PATH=%PYTHON_HOME%\Tools\cx_Freeze
271 )
272 if exist "C:\cx_Freeze\FreezePython.exe" (
273 set PYTHON_FREEZER_PATH=C:\cx_Freeze
274 )
275 if exist "C:\cx_Freeze-3.0.3" (
276 set PYTHON_FREEZER_PATH=C:\cx_Freeze-3.0.3
277 )
278 if not defined PYTHON_FREEZER_PATH (
279 echo.
280 echo !!! WARNING !!! Will not be able to compile Python programs to .exe
281 echo Will setup environment to run Python scripts directly.
282 echo.
283 set PATH=%BASETOOLS_PYTHON_SOURCE%\Trim;%PATH%
284 set PATH=%BASETOOLS_PYTHON_SOURCE%\GenFds;%PATH%
285 set PATH=%BASETOOLS_PYTHON_SOURCE%\build;%PATH%
286 set PATHEXT=%PATHEXT%;.py
287 )
288 )
289
290 echo BASE_TOOLS_PATH = %BASE_TOOLS_PATH%
291 echo PYTHON_PATH = %PYTHON_PATH%
292 echo PYTHON_FREEZER_PATH = %PYTHON_FREEZER_PATH%
293 echo.
294
295 call "%EDK_TOOLS_PATH%\get_vsvars.bat"
296 if not defined VCINSTALLDIR (
297 @echo.
298 @echo !!! ERROR !!!! Cannot find Visual Studio, required to build C tools !!!
299 @echo.
300 goto end
301 )
302
303 :VisualStudioAvailable
304 if not defined FORCE_REBUILD 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.
352 @echo.
353
354 :end
355 set REBUILD=
356 set FORCE_REBUILD=
357 set RECONFIG=
358 popd
359