]> git.proxmox.com Git - mirror_edk2.git/blame - BaseTools/toolsetup.bat
Edk2: Remove nt32 related flag in bat files
[mirror_edk2.git] / BaseTools / toolsetup.bat
CommitLineData
8014e7ce 1@REM @file\r
f7496d71 2@REM This stand-alone program is typically called by the edksetup.bat file,\r
8014e7ce 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
07a756b9 5@REM\r
f7496d71 6@REM Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
92063b0b 7@REM (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>\r
8014e7ce 8@REM\r
2e351cbe 9@REM SPDX-License-Identifier: BSD-2-Clause-Patent\r
07a756b9 10@REM\r
11\r
12@echo off\r
8014e7ce 13pushd .\r
07a756b9 14\r
8014e7ce 15@REM ##############################################################\r
16@REM # You should not have to modify anything below this line\r
17@REM #\r
07a756b9 18\r
e4ac870f
LG
19if /I "%1"=="-h" goto Usage\r
20if /I "%1"=="-help" goto Usage\r
21if /I "%1"=="--help" goto Usage\r
22if /I "%1"=="/h" goto Usage\r
23if /I "%1"=="/help" goto Usage\r
24if /I "%1"=="/?" goto Usage\r
07a756b9 25\r
07a756b9 26\r
8014e7ce 27:loop\r
e4ac870f 28 if "%1"=="" goto setup_workspace\r
e4ac870f 29 if /I "%1"=="Reconfig" (\r
8014e7ce 30 shift\r
31 set RECONFIG=TRUE\r
32 goto loop\r
33 )\r
e4ac870f 34 if /I "%1"=="Rebuild" (\r
8014e7ce 35 shift\r
36 set REBUILD=TRUE\r
37 goto loop\r
38 )\r
e4ac870f 39 if /I "%1"=="ForceRebuild" (\r
8014e7ce 40 shift\r
41 set FORCE_REBUILD=TRUE\r
42 goto loop\r
43 )\r
44 if "%1"=="" goto setup_workspace\r
45 if exist %1 (\r
46 if not defined BASE_TOOLS_PATH (\r
47 if exist %1\Source set BASE_TOOLS_PATH=%1\r
48 shift\r
49 goto loop\r
50 )\r
51 if not defined EDK_TOOLS_PATH (\r
52 if exist %1\Bin\Win32 set EDK_TOOLS_PATH=%1\r
53 shift\r
54 goto loop\r
55 )\r
56 echo.\r
57 echo !!! ERROR !!! Unknown argument, %1 !!!\r
58 echo.\r
59 goto end\r
60 ) else (\r
61 echo.\r
62 echo !!! ERROR !!! Unknown argument, %1 !!!\r
63 echo.\r
64 goto end\r
65 )\r
66 goto loop\r
67\r
68\r
69@REM\r
70@REM Check the required system environment variables\r
71@REM\r
07a756b9 72\r
73:setup_workspace\r
8014e7ce 74 REM\r
75 REM check the EDK_TOOLS_PATH\r
76 REM\r
77 if not defined EDK_TOOLS_PATH goto no_EDK_TOOLS_PATH\r
78 if exist %EDK_TOOLS_PATH% goto set_PATH\r
07a756b9 79\r
8014e7ce 80:no_EDK_TOOLS_PATH\r
81 if not defined WORKSPACE (\r
82 if defined BASE_TOOLS_PATH (\r
83 set EDK_TOOLS_PATH=%BASE_TOOLS_PATH%\r
84 goto set_PATH\r
85 ) else (\r
86 echo.\r
87 echo !!! ERROR !!! Neither BASE_TOOLS_PATH nor EDK_TOOLS_PATH are set. !!!\r
88 echo.\r
89 goto end\r
90 )\r
91 ) else (\r
92 if exist %WORKSPACE%\BaseTools\Bin (\r
93 set EDK_TOOLS_PATH=%WORKSPACE%\BaseTools\r
94 goto set_PATH\r
95 ) else (\r
96 echo.\r
97 echo !!! ERROR !!! No tools path available. Please set EDK_TOOLS_PATH !!!\r
98 echo.\r
99 goto end\r
100 )\r
101 )\r
07a756b9 102\r
8014e7ce 103:set_PATH\r
104 if defined WORKSPACE_TOOLS_PATH goto check_PATH\r
dcc80786 105 if not defined EDK_TOOLS_BIN (\r
0cd84daa
LG
106 set EDK_TOOLS_BIN=%EDK_TOOLS_PATH%\Bin\Win32\r
107 if not exist %EDK_TOOLS_PATH%\Bin\Win32 (\r
dcc80786
LG
108 echo.\r
109 echo !!! ERROR !!! Cannot find BaseTools Bin Win32!!!\r
110 echo Please check the directory %EDK_TOOLS_PATH%\Bin\Win32\r
111 echo Or configure EDK_TOOLS_BIN env to point Win32 directory.\r
f7496d71 112 echo.\r
dcc80786
LG
113 )\r
114 )\r
115 set PATH=%EDK_TOOLS_BIN%;%PATH%\r
8014e7ce 116 set WORKSPACE_TOOLS_PATH=%EDK_TOOLS_PATH%\r
117 goto PATH_ok\r
07a756b9 118\r
8014e7ce 119:check_PATH\r
120 if "%EDK_TOOLS_PATH%"=="%WORKSPACE_TOOLS_PATH%" goto PATH_ok\r
dcc80786 121 if not defined EDK_TOOLS_BIN (\r
0cd84daa
LG
122 set EDK_TOOLS_BIN=%EDK_TOOLS_PATH%\Bin\Win32\r
123 if not exist %EDK_TOOLS_PATH%\Bin\Win32 (\r
dcc80786
LG
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
f7496d71 128 echo.\r
dcc80786
LG
129 )\r
130 )\r
131 set PATH=%EDK_TOOLS_BIN%;%PATH%\r
8014e7ce 132 set WORKSPACE_TOOLS_PATH=%EDK_TOOLS_PATH%\r
133 echo Resetting the PATH variable to include the EDK_TOOLS_PATH for this session.\r
07a756b9 134\r
8014e7ce 135:PATH_ok\r
07a756b9 136REM\r
dcc80786 137REM copy *.template to %CONF_PATH%\r
07a756b9 138REM\r
8014e7ce 139if not defined WORKSPACE (\r
140 if defined RECONFIG (\r
141 echo.\r
142 echo !!! WARNING !!! WORKSPACE environment variable was not set, cannot Reconfig !!!\r
143 echo.\r
144 )\r
145 goto skip_reconfig\r
146)\r
147\r
314b26a8
YZ
148IF NOT exist "%EDK_TOOLS_PATH%\set_vsprefix_envs.bat" (\r
149 @echo.\r
150 @echo !!! ERROR !!! The set_vsprefix_envs.bat was not found !!!\r
151 @echo.\r
152 goto end\r
153)\r
154call %EDK_TOOLS_PATH%\set_vsprefix_envs.bat\r
155\r
1f2cd652
MH
156if not defined CONF_PATH (\r
157 set CONF_PATH=%WORKSPACE%\Conf\r
ae5cc3c3 158)\r
1f2cd652 159\r
ae5cc3c3
HW
160if NOT exist %CONF_PATH% (\r
161 if defined PACKAGES_PATH (\r
162 for %%i IN (%PACKAGES_PATH%) DO (\r
163 if exist %%~fi\Conf (\r
164 set CONF_PATH=%%i\Conf\r
165 goto CopyConf\r
dcc80786
LG
166 )\r
167 )\r
168 )\r
169)\r
f7496d71 170\r
dcc80786
LG
171:CopyConf\r
172if NOT exist %CONF_PATH% (\r
173 mkdir %CONF_PATH%\r
07a756b9 174) else (\r
8014e7ce 175 if defined RECONFIG (\r
07a756b9 176 echo.\r
dcc80786 177 echo Over-writing the files in the CONF_PATH directory\r
07a756b9 178 echo using the default template files\r
179 echo.\r
180 )\r
181)\r
8014e7ce 182\r
dcc80786
LG
183if NOT exist %CONF_PATH%\target.txt (\r
184 echo copying ... target.template to %CONF_PATH%\target.txt\r
884f6e76 185 if NOT exist %EDK_TOOLS_PATH%\Conf\target.template (\r
186 echo Error: target.template is missing at folder %EDK_TOOLS_PATH%\Conf\\r
187 )\r
dcc80786 188 copy %EDK_TOOLS_PATH%\Conf\target.template %CONF_PATH%\target.txt > nul\r
07a756b9 189) else (\r
dcc80786
LG
190 if defined RECONFIG echo over-write ... target.template to %CONF_PATH%\target.txt\r
191 if defined RECONFIG copy /Y %EDK_TOOLS_PATH%\Conf\target.template %CONF_PATH%\target.txt > nul\r
07a756b9 192)\r
8014e7ce 193\r
dcc80786
LG
194if NOT exist %CONF_PATH%\tools_def.txt (\r
195 echo copying ... tools_def.template to %CONF_PATH%\tools_def.txt\r
884f6e76 196 if NOT exist %EDK_TOOLS_PATH%\Conf\tools_def.template (\r
197 echo Error: tools_def.template is missing at folder %EDK_TOOLS_PATH%\Conf\\r
198 )\r
dcc80786 199 copy %EDK_TOOLS_PATH%\Conf\tools_def.template %CONF_PATH%\tools_def.txt > nul\r
07a756b9 200) else (\r
dcc80786
LG
201 if defined RECONFIG echo over-write ... tools_def.template to %CONF_PATH%\tools_def.txt\r
202 if defined RECONFIG copy /Y %EDK_TOOLS_PATH%\Conf\tools_def.template %CONF_PATH%\tools_def.txt > nul\r
07a756b9 203)\r
8014e7ce 204\r
dcc80786
LG
205if NOT exist %CONF_PATH%\build_rule.txt (\r
206 echo copying ... build_rule.template to %CONF_PATH%\build_rule.txt\r
884f6e76 207 if NOT exist %EDK_TOOLS_PATH%\Conf\build_rule.template (\r
208 echo Error: build_rule.template is missing at folder %EDK_TOOLS_PATH%\Conf\\r
209 )\r
dcc80786 210 copy %EDK_TOOLS_PATH%\Conf\build_rule.template %CONF_PATH%\build_rule.txt > nul\r
07a756b9 211) else (\r
dcc80786
LG
212 if defined RECONFIG echo over-write ... build_rule.template to %CONF_PATH%\build_rule.txt\r
213 if defined RECONFIG copy /Y %EDK_TOOLS_PATH%\Conf\build_rule.template %CONF_PATH%\build_rule.txt > nul\r
07a756b9 214)\r
215\r
dcc80786
LG
216echo PATH = %PATH%\r
217echo.\r
218if defined WORKSPACE (\r
219 echo WORKSPACE = %WORKSPACE%\r
220)\r
221if defined PACKAGES_PATH (\r
222 echo PACKAGES_PATH = %PACKAGES_PATH%\r
223)\r
224echo EDK_TOOLS_PATH = %EDK_TOOLS_PATH%\r
225if defined BASE_TOOLS_PATH (\r
226 echo BASE_TOOLS_PATH = %BASE_TOOLS_PATH%\r
227)\r
228if defined EDK_TOOLS_BIN (\r
229 echo EDK_TOOLS_BIN = %EDK_TOOLS_BIN%\r
230)\r
231echo CONF_PATH = %CONF_PATH%\r
232echo.\r
233\r
8014e7ce 234:skip_reconfig\r
235\r
236@REM\r
237@REM Test if we are going to have to do a build\r
238@REM\r
239if defined FORCE_REBUILD goto check_build_environment\r
240if defined REBUILD goto check_build_environment\r
dcc80786 241if not exist "%EDK_TOOLS_PATH%" goto check_build_environment\r
0cd84daa 242if not exist "%EDK_TOOLS_BIN%" goto check_build_environment\r
dcc80786 243\r
7419aedd 244IF NOT EXIST "%EDK_TOOLS_BIN%\EfiRom.exe" goto check_c_tools\r
7419aedd
LG
245IF NOT EXIST "%EDK_TOOLS_BIN%\GenFfs.exe" goto check_c_tools\r
246IF NOT EXIST "%EDK_TOOLS_BIN%\GenFv.exe" goto check_c_tools\r
247IF NOT EXIST "%EDK_TOOLS_BIN%\GenFw.exe" goto check_c_tools\r
7419aedd 248IF NOT EXIST "%EDK_TOOLS_BIN%\GenSec.exe" goto check_c_tools\r
7419aedd
LG
249IF NOT EXIST "%EDK_TOOLS_BIN%\Split.exe" goto check_c_tools\r
250IF NOT EXIST "%EDK_TOOLS_BIN%\TianoCompress.exe" goto check_c_tools\r
251IF NOT EXIST "%EDK_TOOLS_BIN%\VfrCompile.exe" goto check_c_tools\r
252IF NOT EXIST "%EDK_TOOLS_BIN%\VolInfo.exe" goto check_c_tools\r
253\r
7b500c60 254goto check_build_environment\r
7419aedd
LG
255\r
256:check_c_tools\r
257 echo.\r
fb0b35e0 258 echo !!! ERROR !!! Binary C tools are missing. They are required to be built from BaseTools Source.\r
7419aedd 259 echo.\r
07a756b9 260\r
8014e7ce 261:check_build_environment\r
9c2d68c0 262 set PYTHONHASHSEED=1\r
8014e7ce 263\r
264 if not defined BASE_TOOLS_PATH (\r
265 if not exist "Source\C\Makefile" (\r
266 if not exist "%EDK_TOOLS_PATH%\Source\C\Makefile" goto no_source_files\r
267 set BASE_TOOLS_PATH=%EDK_TOOLS_PATH%\r
268 ) else (\r
269 set BASE_TOOLS_PATH=%CD%\r
270 )\r
271 )\r
8014e7ce 272\r
9c2d68c0 273:defined_python\r
7aef7b7c
LG
274if defined PYTHON_COMMAND if not defined PYTHON3_ENABLE (\r
275 goto check_python_available\r
276)\r
9c2d68c0
ZF
277if defined PYTHON3_ENABLE (\r
278 if "%PYTHON3_ENABLE%" EQU "TRUE" (\r
7aef7b7c
LG
279 set PYTHON_COMMAND=py -3\r
280 goto check_python_available\r
281 ) else (\r
282 goto check_python2\r
283 )\r
284)\r
285if not defined PYTHON_COMMAND if not defined PYTHON3_ENABLE (\r
286 set PYTHON_COMMAND=py -3\r
287 py -3 %BASE_TOOLS_PATH%\Tests\PythonTest.py >PythonCheck.txt 2>&1\r
288 setlocal enabledelayedexpansion\r
289 set /p PythonCheck=<"PythonCheck.txt"\r
290 del PythonCheck.txt\r
291 if "!PythonCheck!" NEQ "TRUE" (\r
292 if not defined PYTHON_HOME if not defined PYTHONHOME (\r
293 endlocal\r
294 set PYTHON_COMMAND=\r
1ccc4d89 295 echo.\r
7aef7b7c
LG
296 echo !!! ERROR !!! Binary python tools are missing.\r
297 echo PYTHON_COMMAND, PYTHON3_ENABLE or PYTHON_HOME\r
298 echo Environment variable is not set successfully.\r
299 echo They is required to build or execute the python tools.\r
1ccc4d89
LG
300 echo.\r
301 goto end\r
9c2d68c0 302 ) else (\r
7aef7b7c 303 goto check_python2\r
9c2d68c0 304 )\r
7aef7b7c
LG
305 ) else (\r
306 goto check_freezer_path\r
307 )\r
9c2d68c0
ZF
308)\r
309\r
7aef7b7c
LG
310:check_python2\r
311endlocal\r
9c2d68c0
ZF
312if defined PYTHON_HOME (\r
313 if EXIST "%PYTHON_HOME%" (\r
7aef7b7c
LG
314 set PYTHON_COMMAND=%PYTHON_HOME%\python.exe\r
315 goto check_python_available\r
9c2d68c0 316 )\r
7aef7b7c 317)\r
9c2d68c0
ZF
318if defined PYTHONHOME (\r
319 if EXIST "%PYTHONHOME%" (\r
320 set PYTHON_HOME=%PYTHONHOME%\r
7aef7b7c
LG
321 set PYTHON_COMMAND=%PYTHON_HOME%\python.exe\r
322 goto check_python_available\r
323 )\r
324)\r
325echo.\r
326echo !!! ERROR !!! PYTHON_HOME is not defined or The value of this variable does not exist\r
327echo.\r
328goto end\r
329:check_python_available\r
330%PYTHON_COMMAND% %BASE_TOOLS_PATH%\Tests\PythonTest.py >PythonCheck.txt 2>&1\r
331 setlocal enabledelayedexpansion\r
332 set /p PythonCheck=<"PythonCheck.txt"\r
333 del PythonCheck.txt\r
334 if "!PythonCheck!" NEQ "TRUE" (\r
335 echo.\r
336 echo ! ERROR ! "%PYTHON_COMMAND%" is not installed or added to environment variables\r
337 echo.\r
338 goto end\r
339 ) else (\r
9c2d68c0 340 goto check_freezer_path\r
8014e7ce 341 )\r
342\r
9c2d68c0 343:check_freezer_path\r
7aef7b7c 344 endlocal\r
9c2d68c0 345 if defined BASETOOLS_PYTHON_SOURCE goto print_python_info\r
7b500c60 346 set "PATH=%BASE_TOOLS_PATH%\BinWrappers\WindowsLike;%PATH%"\r
7419aedd
LG
347 set BASETOOLS_PYTHON_SOURCE=%BASE_TOOLS_PATH%\Source\Python\r
348 set PYTHONPATH=%BASETOOLS_PYTHON_SOURCE%;%PYTHONPATH%\r
f7496d71 349\r
9c2d68c0 350:print_python_info\r
7419aedd 351 echo PATH = %PATH%\r
7aef7b7c 352 if defined PYTHON3_ENABLE if "%PYTHON3_ENABLE%" EQU "TRUE" (\r
9c2d68c0 353 echo PYTHON3_ENABLE = %PYTHON3_ENABLE%\r
7aef7b7c 354 echo PYTHON3 = %PYTHON_COMMAND%\r
9c2d68c0 355 ) else (\r
7aef7b7c
LG
356 echo PYTHON3_ENABLE = FALSE\r
357 echo PYTHON_COMMAND = %PYTHON_COMMAND%\r
9c2d68c0 358 )\r
7419aedd 359 echo PYTHONPATH = %PYTHONPATH%\r
8014e7ce 360 echo.\r
361\r
7419aedd
LG
362:VisualStudioAvailable\r
363 if not defined FORCE_REBUILD (\r
364 if not defined REBUILD (\r
365 goto end\r
366 )\r
367 )\r
e4ac870f
LG
368 call "%EDK_TOOLS_PATH%\get_vsvars.bat"\r
369 if not defined VCINSTALLDIR (\r
370 @echo.\r
371 @echo !!! ERROR !!!! Cannot find Visual Studio, required to build C tools !!!\r
372 @echo.\r
373 goto end\r
8014e7ce 374 )\r
e4ac870f 375 if not defined FORCE_REBUILD goto IncrementalBuild\r
8014e7ce 376\r
377:CleanAndBuild\r
378 pushd .\r
379 cd %BASE_TOOLS_PATH%\r
380 call nmake cleanall\r
381 del /f /q %BASE_TOOLS_PATH%\Bin\Win32\*.*\r
382 popd\r
383 @REM Let CleanAndBuild fall through to IncrementalBuild\r
384\r
385\r
386:IncrementalBuild\r
387 pushd .\r
388 cd %BASE_TOOLS_PATH%\r
389 call nmake c\r
390 popd\r
8014e7ce 391 goto end\r
392\r
393\r
394:no_source_files\r
395 echo.\r
396 echo !!! ERROR !!! Cannot build BaseTools applications - no source directory located !!!\r
397 echo.\r
398 goto end\r
399\r
400:Usage\r
e4ac870f 401 @echo.\r
8014e7ce 402 echo Usage: "%0 [-h | -help | --help | /h | /help | /?] [ Rebuild | ForceRebuild ] [Reconfig] [base_tools_path [edk_tools_path]]"\r
e4ac870f 403 @echo.\r
f7496d71 404 @echo base_tools_path BaseTools project path, BASE_TOOLS_PATH will be set to this path.\r
e4ac870f 405 @echo edk_tools_path EDK_TOOLS_PATH will be set to this path.\r
f7496d71 406 @echo Rebuild If sources are available perform an Incremental build, only\r
e4ac870f 407 @echo build those updated tools.\r
f7496d71 408 @echo ForceRebuild If sources are available, rebuild all tools regardless of\r
e4ac870f
LG
409 @echo whether they have been updated or not.\r
410 @echo Reconfig Reinstall target.txt, tools_def.txt and build_rule.txt.\r
411 @echo.\r
07a756b9 412\r
413:end\r
8014e7ce 414set REBUILD=\r
415set FORCE_REBUILD=\r
416set RECONFIG=\r
417popd\r
418\r