]> git.proxmox.com Git - mirror_edk2.git/blame_incremental - BaseTools/toolsetup.bat
ArmPlatformPkg/ArmVExpressFastBootDxe: eliminate deprecated string functions
[mirror_edk2.git] / BaseTools / toolsetup.bat
... / ...
CommitLineData
1@REM @file\r
2@REM This stand-alone program is typically called by the edksetup.bat file, \r
3@REM however it may be executed directly from the BaseTools project folder\r
4@REM if the file is not executed within a WORKSPACE\BaseTools folder.\r
5@REM\r
6@REM Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>\r
7@REM (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>\r
8@REM\r
9@REM This program and the accompanying materials are licensed and made available\r
10@REM under the terms and conditions of the BSD License which accompanies this \r
11@REM distribution. The full text of the license may be found at:\r
12@REM http://opensource.org/licenses/bsd-license.php\r
13@REM\r
14@REM THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
15@REM WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR \r
16@REM IMPLIED.\r
17@REM\r
18\r
19@echo off\r
20pushd .\r
21\r
22@REM ##############################################################\r
23@REM # You should not have to modify anything below this line\r
24@REM #\r
25\r
26if /I "%1"=="-h" goto Usage\r
27if /I "%1"=="-help" goto Usage\r
28if /I "%1"=="--help" goto Usage\r
29if /I "%1"=="/h" goto Usage\r
30if /I "%1"=="/help" goto Usage\r
31if /I "%1"=="/?" goto Usage\r
32\r
33\r
34:loop\r
35 if "%1"=="" goto setup_workspace\r
36 if /I "%1"=="--nt32" (\r
37 if /I "%2" == "X64" (\r
38 shift\r
39 )\r
40 @REM Ignore --nt32 flag\r
41 shift\r
42 goto loop\r
43 )\r
44 if /I "%1"=="Reconfig" (\r
45 shift\r
46 set RECONFIG=TRUE\r
47 goto loop\r
48 )\r
49 if /I "%1"=="Rebuild" (\r
50 shift\r
51 set REBUILD=TRUE\r
52 goto loop\r
53 )\r
54 if /I "%1"=="ForceRebuild" (\r
55 shift\r
56 set FORCE_REBUILD=TRUE\r
57 goto loop\r
58 )\r
59 if "%1"=="" goto setup_workspace\r
60 if exist %1 (\r
61 if not defined BASE_TOOLS_PATH (\r
62 if exist %1\Source set BASE_TOOLS_PATH=%1\r
63 shift\r
64 goto loop\r
65 )\r
66 if not defined EDK_TOOLS_PATH (\r
67 if exist %1\Bin\Win32 set EDK_TOOLS_PATH=%1\r
68 shift\r
69 goto loop\r
70 )\r
71 echo.\r
72 echo !!! ERROR !!! Unknown argument, %1 !!!\r
73 echo.\r
74 goto end\r
75 ) else (\r
76 echo.\r
77 echo !!! ERROR !!! Unknown argument, %1 !!!\r
78 echo.\r
79 goto end\r
80 )\r
81 goto loop\r
82\r
83\r
84@REM\r
85@REM Check the required system environment variables\r
86@REM\r
87\r
88:setup_workspace\r
89 REM\r
90 REM check the EDK_TOOLS_PATH\r
91 REM\r
92 if not defined EDK_TOOLS_PATH goto no_EDK_TOOLS_PATH\r
93 if exist %EDK_TOOLS_PATH% goto set_PATH\r
94\r
95:no_EDK_TOOLS_PATH\r
96 if not defined WORKSPACE (\r
97 if defined BASE_TOOLS_PATH (\r
98 set EDK_TOOLS_PATH=%BASE_TOOLS_PATH%\r
99 goto set_PATH\r
100 ) else (\r
101 echo.\r
102 echo !!! ERROR !!! Neither BASE_TOOLS_PATH nor EDK_TOOLS_PATH are set. !!!\r
103 echo.\r
104 goto end\r
105 )\r
106 ) else (\r
107 if exist %WORKSPACE%\BaseTools\Bin (\r
108 set EDK_TOOLS_PATH=%WORKSPACE%\BaseTools\r
109 goto set_PATH\r
110 ) else (\r
111 echo.\r
112 echo !!! ERROR !!! No tools path available. Please set EDK_TOOLS_PATH !!!\r
113 echo.\r
114 goto end\r
115 )\r
116 )\r
117\r
118:set_PATH\r
119 if defined WORKSPACE_TOOLS_PATH goto check_PATH\r
120 if not defined EDK_TOOLS_BIN (\r
121 if exist %EDK_TOOLS_PATH%\Bin\Win32 (\r
122 set EDK_TOOLS_BIN=%EDK_TOOLS_PATH%\Bin\Win32\r
123 ) else (\r
124 echo.\r
125 echo !!! ERROR !!! Cannot find BaseTools Bin Win32!!!\r
126 echo Please check the directory %EDK_TOOLS_PATH%\Bin\Win32\r
127 echo Or configure EDK_TOOLS_BIN env to point Win32 directory.\r
128 echo. \r
129 goto end\r
130 )\r
131 )\r
132 set PATH=%EDK_TOOLS_BIN%;%PATH%\r
133 set WORKSPACE_TOOLS_PATH=%EDK_TOOLS_PATH%\r
134 goto PATH_ok\r
135\r
136:check_PATH\r
137 if "%EDK_TOOLS_PATH%"=="%WORKSPACE_TOOLS_PATH%" goto PATH_ok\r
138 if not defined EDK_TOOLS_BIN (\r
139 if exist %EDK_TOOLS_PATH%\Bin\Win32 (\r
140 set EDK_TOOLS_BIN=%EDK_TOOLS_PATH%\Bin\Win32\r
141 ) else (\r
142 echo.\r
143 echo !!! ERROR !!! Cannot find BaseTools Bin Win32!!!\r
144 echo Please check the directory %EDK_TOOLS_PATH%\Bin\Win32\r
145 echo Or configure EDK_TOOLS_BIN env to point Win32 directory.\r
146 echo. \r
147 goto end\r
148 )\r
149 )\r
150 set PATH=%EDK_TOOLS_BIN%;%PATH%\r
151 set WORKSPACE_TOOLS_PATH=%EDK_TOOLS_PATH%\r
152 echo Resetting the PATH variable to include the EDK_TOOLS_PATH for this session.\r
153\r
154:PATH_ok\r
155REM\r
156REM copy *.template to %CONF_PATH%\r
157REM\r
158if not defined WORKSPACE (\r
159 if defined RECONFIG (\r
160 echo.\r
161 echo !!! WARNING !!! WORKSPACE environment variable was not set, cannot Reconfig !!!\r
162 echo.\r
163 )\r
164 goto skip_reconfig\r
165)\r
166\r
167if not defined CONF_PATH (\r
168 set CONF_PATH=%WORKSPACE%\Conf\r
169)\r
170\r
171if NOT exist %CONF_PATH% (\r
172 if defined PACKAGES_PATH (\r
173 for %%i IN (%PACKAGES_PATH%) DO (\r
174 if exist %%~fi\Conf (\r
175 set CONF_PATH=%%i\Conf\r
176 goto CopyConf\r
177 )\r
178 )\r
179 )\r
180)\r
181 \r
182:CopyConf\r
183if NOT exist %CONF_PATH% (\r
184 mkdir %CONF_PATH%\r
185) else (\r
186 if defined RECONFIG (\r
187 echo.\r
188 echo Over-writing the files in the CONF_PATH directory\r
189 echo using the default template files\r
190 echo.\r
191 )\r
192)\r
193\r
194if NOT exist %CONF_PATH%\target.txt (\r
195 echo copying ... target.template to %CONF_PATH%\target.txt\r
196 if NOT exist %EDK_TOOLS_PATH%\Conf\target.template (\r
197 echo Error: target.template is missing at folder %EDK_TOOLS_PATH%\Conf\\r
198 )\r
199 copy %EDK_TOOLS_PATH%\Conf\target.template %CONF_PATH%\target.txt > nul\r
200) else (\r
201 if defined RECONFIG echo over-write ... target.template to %CONF_PATH%\target.txt\r
202 if defined RECONFIG copy /Y %EDK_TOOLS_PATH%\Conf\target.template %CONF_PATH%\target.txt > nul\r
203)\r
204\r
205if NOT exist %CONF_PATH%\tools_def.txt (\r
206 echo copying ... tools_def.template to %CONF_PATH%\tools_def.txt\r
207 if NOT exist %EDK_TOOLS_PATH%\Conf\tools_def.template (\r
208 echo Error: tools_def.template is missing at folder %EDK_TOOLS_PATH%\Conf\\r
209 )\r
210 copy %EDK_TOOLS_PATH%\Conf\tools_def.template %CONF_PATH%\tools_def.txt > nul\r
211) else (\r
212 if defined RECONFIG echo over-write ... tools_def.template to %CONF_PATH%\tools_def.txt\r
213 if defined RECONFIG copy /Y %EDK_TOOLS_PATH%\Conf\tools_def.template %CONF_PATH%\tools_def.txt > nul\r
214)\r
215\r
216if NOT exist %CONF_PATH%\build_rule.txt (\r
217 echo copying ... build_rule.template to %CONF_PATH%\build_rule.txt\r
218 if NOT exist %EDK_TOOLS_PATH%\Conf\build_rule.template (\r
219 echo Error: build_rule.template is missing at folder %EDK_TOOLS_PATH%\Conf\\r
220 )\r
221 copy %EDK_TOOLS_PATH%\Conf\build_rule.template %CONF_PATH%\build_rule.txt > nul\r
222) else (\r
223 if defined RECONFIG echo over-write ... build_rule.template to %CONF_PATH%\build_rule.txt\r
224 if defined RECONFIG copy /Y %EDK_TOOLS_PATH%\Conf\build_rule.template %CONF_PATH%\build_rule.txt > nul\r
225)\r
226\r
227echo PATH = %PATH%\r
228echo.\r
229if defined WORKSPACE (\r
230 echo WORKSPACE = %WORKSPACE%\r
231)\r
232if defined PACKAGES_PATH (\r
233 echo PACKAGES_PATH = %PACKAGES_PATH%\r
234)\r
235echo EDK_TOOLS_PATH = %EDK_TOOLS_PATH%\r
236if defined BASE_TOOLS_PATH (\r
237 echo BASE_TOOLS_PATH = %BASE_TOOLS_PATH%\r
238)\r
239if defined EDK_TOOLS_BIN (\r
240 echo EDK_TOOLS_BIN = %EDK_TOOLS_BIN%\r
241)\r
242echo CONF_PATH = %CONF_PATH%\r
243echo.\r
244\r
245:skip_reconfig\r
246\r
247@REM\r
248@REM Test if we are going to have to do a build\r
249@REM\r
250if defined FORCE_REBUILD goto check_build_environment\r
251if defined REBUILD goto check_build_environment\r
252if not exist "%EDK_TOOLS_PATH%" goto check_build_environment\r
253\r
254IF NOT EXIST "%EDK_TOOLS_BIN%\BootSectImage.exe" goto check_c_tools\r
255IF NOT EXIST "%EDK_TOOLS_BIN%\EfiLdrImage.exe" goto check_c_tools\r
256IF NOT EXIST "%EDK_TOOLS_BIN%\EfiRom.exe" goto check_c_tools\r
257IF NOT EXIST "%EDK_TOOLS_BIN%\GenBootSector.exe" goto check_c_tools\r
258IF NOT EXIST "%EDK_TOOLS_BIN%\GenFfs.exe" goto check_c_tools\r
259IF NOT EXIST "%EDK_TOOLS_BIN%\GenFv.exe" goto check_c_tools\r
260IF NOT EXIST "%EDK_TOOLS_BIN%\GenFw.exe" goto check_c_tools\r
261IF NOT EXIST "%EDK_TOOLS_BIN%\GenPage.exe" goto check_c_tools\r
262IF NOT EXIST "%EDK_TOOLS_BIN%\GenSec.exe" goto check_c_tools\r
263IF NOT EXIST "%EDK_TOOLS_BIN%\GenVtf.exe" goto check_c_tools\r
264IF NOT EXIST "%EDK_TOOLS_BIN%\Split.exe" goto check_c_tools\r
265IF NOT EXIST "%EDK_TOOLS_BIN%\TianoCompress.exe" goto check_c_tools\r
266IF NOT EXIST "%EDK_TOOLS_BIN%\VfrCompile.exe" goto check_c_tools\r
267IF NOT EXIST "%EDK_TOOLS_BIN%\VolInfo.exe" goto check_c_tools\r
268\r
269goto check_python_tools\r
270\r
271:check_c_tools\r
272 echo.\r
273 echo !!! ERROR !!! Binary C tools are missing. They are requried to be built from BaseTools Source.\r
274 echo.\r
275 goto end\r
276\r
277:check_python_tools\r
278IF NOT EXIST "%EDK_TOOLS_BIN%\build.exe" goto check_build_environment\r
279IF NOT EXIST "%EDK_TOOLS_BIN%\GenFds.exe" goto check_build_environment\r
280IF NOT EXIST "%EDK_TOOLS_BIN%\TargetTool.exe" goto check_build_environment\r
281IF NOT EXIST "%EDK_TOOLS_BIN%\Trim.exe" goto check_build_environment\r
282\r
283goto end\r
284\r
285:check_build_environment\r
286 if defined BASETOOLS_PYTHON_SOURCE goto VisualStudioAvailable\r
287\r
288 if not defined BASE_TOOLS_PATH (\r
289 if not exist "Source\C\Makefile" (\r
290 if not exist "%EDK_TOOLS_PATH%\Source\C\Makefile" goto no_source_files\r
291 set BASE_TOOLS_PATH=%EDK_TOOLS_PATH%\r
292 ) else (\r
293 set BASE_TOOLS_PATH=%CD%\r
294 )\r
295 )\r
296\r
297 if not defined PYTHON_HOME (\r
298 if defined PYTHONHOME (\r
299 set PYTHON_HOME=%PYTHONHOME%\r
300 ) else (\r
301 echo.\r
302 echo !!! ERROR !!! Binary python tools are missing. PYTHON_HOME environment variable is not set. \r
303 echo PYTHON_HOME is required to build or execute the python tools.\r
304 echo.\r
305 goto end\r
306 )\r
307 )\r
308\r
309 @REM We have Python, now test for FreezePython application\r
310 if not defined PYTHON_FREEZER_PATH (\r
311 echo.\r
312 echo !!! WARNING !!! PYTHON_FREEZER_PATH environment variable is not set.\r
313 echo Setup environment to run Python scripts directly.\r
314 echo.\r
315 set "PATH=%PATH%;%BASE_TOOLS_PATH%\BinWrappers\WindowsLike"\r
316 )\r
317\r
318 set BASETOOLS_PYTHON_SOURCE=%BASE_TOOLS_PATH%\Source\Python\r
319 set PYTHONPATH=%BASETOOLS_PYTHON_SOURCE%;%PYTHONPATH%\r
320 \r
321 echo PATH = %PATH%\r
322 echo PYTHON_HOME = %PYTHON_HOME%\r
323 echo PYTHONPATH = %PYTHONPATH%\r
324 if defined PYTHON_FREEZER_PATH (\r
325 echo PYTHON_FREEZER_PATH = %PYTHON_FREEZER_PATH%\r
326 )\r
327 echo.\r
328\r
329:VisualStudioAvailable\r
330 if not defined FORCE_REBUILD (\r
331 if not defined REBUILD (\r
332 goto end\r
333 )\r
334 )\r
335 call "%EDK_TOOLS_PATH%\get_vsvars.bat"\r
336 if not defined VCINSTALLDIR (\r
337 @echo.\r
338 @echo !!! ERROR !!!! Cannot find Visual Studio, required to build C tools !!!\r
339 @echo.\r
340 goto end\r
341 )\r
342 if not defined FORCE_REBUILD goto IncrementalBuild\r
343\r
344:CleanAndBuild\r
345 pushd .\r
346 cd %BASE_TOOLS_PATH%\r
347 call nmake cleanall\r
348 del /f /q %BASE_TOOLS_PATH%\Bin\Win32\*.*\r
349 popd\r
350 @REM Let CleanAndBuild fall through to IncrementalBuild\r
351\r
352\r
353:IncrementalBuild\r
354 pushd .\r
355 cd %BASE_TOOLS_PATH%\r
356 call nmake c\r
357 popd\r
358\r
359 if defined PYTHON_FREEZER_PATH (\r
360 echo BUILDING PYTHON TOOLS\r
361 pushd .\r
362 cd %BASE_TOOLS_PATH%\r
363 call nmake python\r
364 popd\r
365 ) else (\r
366 echo.\r
367 echo !!! WARNING !!! Cannot make executable from Python code, executing python scripts instead !!!\r
368 echo.\r
369 )\r
370 goto end\r
371\r
372\r
373:no_source_files\r
374 echo.\r
375 echo !!! ERROR !!! Cannot build BaseTools applications - no source directory located !!!\r
376 echo.\r
377 goto end\r
378\r
379:Usage\r
380 @echo.\r
381 echo Usage: "%0 [-h | -help | --help | /h | /help | /?] [ Rebuild | ForceRebuild ] [Reconfig] [base_tools_path [edk_tools_path]]"\r
382 @echo.\r
383 @echo base_tools_path BaseTools project path, BASE_TOOLS_PATH will be set to this path. \r
384 @echo edk_tools_path EDK_TOOLS_PATH will be set to this path.\r
385 @echo Rebuild If sources are available perform an Incremental build, only \r
386 @echo build those updated tools.\r
387 @echo ForceRebuild If sources are available, rebuild all tools regardless of \r
388 @echo whether they have been updated or not.\r
389 @echo Reconfig Reinstall target.txt, tools_def.txt and build_rule.txt.\r
390 @echo.\r
391\r
392:end\r
393set REBUILD=\r
394set FORCE_REBUILD=\r
395set RECONFIG=\r
396popd\r
397\r