]> git.proxmox.com Git - mirror_edk2.git/blame - BaseTools/toolsetup.bat
BaseTools toolsetup.bat: Set env when the binary tools are missing
[mirror_edk2.git] / BaseTools / toolsetup.bat
CommitLineData
8014e7ce 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
07a756b9 5@REM\r
5d98c319 6@REM Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>\r
92063b0b 7@REM (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>\r
8014e7ce 8@REM\r
9@REM This program and the accompanying materials are licensed and made available\r
4afd3d04 10@REM under the terms and conditions of the BSD License which accompanies this \r
8014e7ce 11@REM distribution. The full text of the license may be found at:\r
12@REM http://opensource.org/licenses/bsd-license.php\r
07a756b9 13@REM\r
14@REM THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
8014e7ce 15@REM WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR \r
16@REM IMPLIED.\r
07a756b9 17@REM\r
18\r
19@echo off\r
8014e7ce 20pushd .\r
07a756b9 21\r
8014e7ce 22@REM ##############################################################\r
23@REM # You should not have to modify anything below this line\r
24@REM #\r
07a756b9 25\r
e4ac870f
LG
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
07a756b9 32\r
07a756b9 33\r
8014e7ce 34:loop\r
e4ac870f
LG
35 if "%1"=="" goto setup_workspace\r
36 if /I "%1"=="--nt32" (\r
92063b0b
CS
37 if /I "%2" == "X64" (\r
38 shift\r
39 )\r
8014e7ce 40 @REM Ignore --nt32 flag\r
41 shift\r
42 goto loop\r
43 )\r
e4ac870f 44 if /I "%1"=="Reconfig" (\r
8014e7ce 45 shift\r
46 set RECONFIG=TRUE\r
47 goto loop\r
48 )\r
e4ac870f 49 if /I "%1"=="Rebuild" (\r
8014e7ce 50 shift\r
51 set REBUILD=TRUE\r
52 goto loop\r
53 )\r
e4ac870f 54 if /I "%1"=="ForceRebuild" (\r
8014e7ce 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
07a756b9 87\r
88:setup_workspace\r
8014e7ce 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
07a756b9 94\r
8014e7ce 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
07a756b9 117\r
8014e7ce 118:set_PATH\r
119 if defined WORKSPACE_TOOLS_PATH goto check_PATH\r
dcc80786
LG
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
5d98c319 129 goto check_build_environment\r
dcc80786
LG
130 )\r
131 )\r
132 set PATH=%EDK_TOOLS_BIN%;%PATH%\r
8014e7ce 133 set WORKSPACE_TOOLS_PATH=%EDK_TOOLS_PATH%\r
134 goto PATH_ok\r
07a756b9 135\r
8014e7ce 136:check_PATH\r
137 if "%EDK_TOOLS_PATH%"=="%WORKSPACE_TOOLS_PATH%" goto PATH_ok\r
dcc80786
LG
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
5d98c319 147 goto check_build_environment\r
dcc80786
LG
148 )\r
149 )\r
150 set PATH=%EDK_TOOLS_BIN%;%PATH%\r
8014e7ce 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
07a756b9 153\r
8014e7ce 154:PATH_ok\r
07a756b9 155REM\r
dcc80786 156REM copy *.template to %CONF_PATH%\r
07a756b9 157REM\r
8014e7ce 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
314b26a8
YZ
167IF NOT exist "%EDK_TOOLS_PATH%\set_vsprefix_envs.bat" (\r
168 @echo.\r
169 @echo !!! ERROR !!! The set_vsprefix_envs.bat was not found !!!\r
170 @echo.\r
171 goto end\r
172)\r
173call %EDK_TOOLS_PATH%\set_vsprefix_envs.bat\r
174\r
1f2cd652
MH
175if not defined CONF_PATH (\r
176 set CONF_PATH=%WORKSPACE%\Conf\r
ae5cc3c3 177)\r
1f2cd652 178\r
ae5cc3c3
HW
179if NOT exist %CONF_PATH% (\r
180 if defined PACKAGES_PATH (\r
181 for %%i IN (%PACKAGES_PATH%) DO (\r
182 if exist %%~fi\Conf (\r
183 set CONF_PATH=%%i\Conf\r
184 goto CopyConf\r
dcc80786
LG
185 )\r
186 )\r
187 )\r
188)\r
189 \r
190:CopyConf\r
191if NOT exist %CONF_PATH% (\r
192 mkdir %CONF_PATH%\r
07a756b9 193) else (\r
8014e7ce 194 if defined RECONFIG (\r
07a756b9 195 echo.\r
dcc80786 196 echo Over-writing the files in the CONF_PATH directory\r
07a756b9 197 echo using the default template files\r
198 echo.\r
199 )\r
200)\r
8014e7ce 201\r
dcc80786
LG
202if NOT exist %CONF_PATH%\target.txt (\r
203 echo copying ... target.template to %CONF_PATH%\target.txt\r
884f6e76 204 if NOT exist %EDK_TOOLS_PATH%\Conf\target.template (\r
205 echo Error: target.template is missing at folder %EDK_TOOLS_PATH%\Conf\\r
206 )\r
dcc80786 207 copy %EDK_TOOLS_PATH%\Conf\target.template %CONF_PATH%\target.txt > nul\r
07a756b9 208) else (\r
dcc80786
LG
209 if defined RECONFIG echo over-write ... target.template to %CONF_PATH%\target.txt\r
210 if defined RECONFIG copy /Y %EDK_TOOLS_PATH%\Conf\target.template %CONF_PATH%\target.txt > nul\r
07a756b9 211)\r
8014e7ce 212\r
dcc80786
LG
213if NOT exist %CONF_PATH%\tools_def.txt (\r
214 echo copying ... tools_def.template to %CONF_PATH%\tools_def.txt\r
884f6e76 215 if NOT exist %EDK_TOOLS_PATH%\Conf\tools_def.template (\r
216 echo Error: tools_def.template is missing at folder %EDK_TOOLS_PATH%\Conf\\r
217 )\r
dcc80786 218 copy %EDK_TOOLS_PATH%\Conf\tools_def.template %CONF_PATH%\tools_def.txt > nul\r
07a756b9 219) else (\r
dcc80786
LG
220 if defined RECONFIG echo over-write ... tools_def.template to %CONF_PATH%\tools_def.txt\r
221 if defined RECONFIG copy /Y %EDK_TOOLS_PATH%\Conf\tools_def.template %CONF_PATH%\tools_def.txt > nul\r
07a756b9 222)\r
8014e7ce 223\r
dcc80786
LG
224if NOT exist %CONF_PATH%\build_rule.txt (\r
225 echo copying ... build_rule.template to %CONF_PATH%\build_rule.txt\r
884f6e76 226 if NOT exist %EDK_TOOLS_PATH%\Conf\build_rule.template (\r
227 echo Error: build_rule.template is missing at folder %EDK_TOOLS_PATH%\Conf\\r
228 )\r
dcc80786 229 copy %EDK_TOOLS_PATH%\Conf\build_rule.template %CONF_PATH%\build_rule.txt > nul\r
07a756b9 230) else (\r
dcc80786
LG
231 if defined RECONFIG echo over-write ... build_rule.template to %CONF_PATH%\build_rule.txt\r
232 if defined RECONFIG copy /Y %EDK_TOOLS_PATH%\Conf\build_rule.template %CONF_PATH%\build_rule.txt > nul\r
07a756b9 233)\r
234\r
dcc80786
LG
235echo PATH = %PATH%\r
236echo.\r
237if defined WORKSPACE (\r
238 echo WORKSPACE = %WORKSPACE%\r
239)\r
240if defined PACKAGES_PATH (\r
241 echo PACKAGES_PATH = %PACKAGES_PATH%\r
242)\r
243echo EDK_TOOLS_PATH = %EDK_TOOLS_PATH%\r
244if defined BASE_TOOLS_PATH (\r
245 echo BASE_TOOLS_PATH = %BASE_TOOLS_PATH%\r
246)\r
247if defined EDK_TOOLS_BIN (\r
248 echo EDK_TOOLS_BIN = %EDK_TOOLS_BIN%\r
249)\r
250echo CONF_PATH = %CONF_PATH%\r
251echo.\r
252\r
8014e7ce 253:skip_reconfig\r
254\r
255@REM\r
256@REM Test if we are going to have to do a build\r
257@REM\r
258if defined FORCE_REBUILD goto check_build_environment\r
259if defined REBUILD goto check_build_environment\r
dcc80786
LG
260if not exist "%EDK_TOOLS_PATH%" goto check_build_environment\r
261\r
7419aedd
LG
262IF NOT EXIST "%EDK_TOOLS_BIN%\BootSectImage.exe" goto check_c_tools\r
263IF NOT EXIST "%EDK_TOOLS_BIN%\EfiLdrImage.exe" goto check_c_tools\r
264IF NOT EXIST "%EDK_TOOLS_BIN%\EfiRom.exe" goto check_c_tools\r
265IF NOT EXIST "%EDK_TOOLS_BIN%\GenBootSector.exe" goto check_c_tools\r
266IF NOT EXIST "%EDK_TOOLS_BIN%\GenFfs.exe" goto check_c_tools\r
267IF NOT EXIST "%EDK_TOOLS_BIN%\GenFv.exe" goto check_c_tools\r
268IF NOT EXIST "%EDK_TOOLS_BIN%\GenFw.exe" goto check_c_tools\r
269IF NOT EXIST "%EDK_TOOLS_BIN%\GenPage.exe" goto check_c_tools\r
270IF NOT EXIST "%EDK_TOOLS_BIN%\GenSec.exe" goto check_c_tools\r
271IF NOT EXIST "%EDK_TOOLS_BIN%\GenVtf.exe" goto check_c_tools\r
272IF NOT EXIST "%EDK_TOOLS_BIN%\Split.exe" goto check_c_tools\r
273IF NOT EXIST "%EDK_TOOLS_BIN%\TianoCompress.exe" goto check_c_tools\r
274IF NOT EXIST "%EDK_TOOLS_BIN%\VfrCompile.exe" goto check_c_tools\r
275IF NOT EXIST "%EDK_TOOLS_BIN%\VolInfo.exe" goto check_c_tools\r
276\r
277goto check_python_tools\r
278\r
279:check_c_tools\r
280 echo.\r
281 echo !!! ERROR !!! Binary C tools are missing. They are requried to be built from BaseTools Source.\r
282 echo.\r
5d98c319 283 goto check_build_environment\r
7419aedd
LG
284\r
285:check_python_tools\r
dcc80786 286IF NOT EXIST "%EDK_TOOLS_BIN%\build.exe" goto check_build_environment\r
dcc80786 287IF NOT EXIST "%EDK_TOOLS_BIN%\GenFds.exe" goto check_build_environment\r
dcc80786 288IF NOT EXIST "%EDK_TOOLS_BIN%\TargetTool.exe" goto check_build_environment\r
dcc80786 289IF NOT EXIST "%EDK_TOOLS_BIN%\Trim.exe" goto check_build_environment\r
07a756b9 290\r
07a756b9 291goto end\r
292\r
8014e7ce 293:check_build_environment\r
7419aedd 294 if defined BASETOOLS_PYTHON_SOURCE goto VisualStudioAvailable\r
8014e7ce 295\r
296 if not defined BASE_TOOLS_PATH (\r
297 if not exist "Source\C\Makefile" (\r
298 if not exist "%EDK_TOOLS_PATH%\Source\C\Makefile" goto no_source_files\r
299 set BASE_TOOLS_PATH=%EDK_TOOLS_PATH%\r
300 ) else (\r
301 set BASE_TOOLS_PATH=%CD%\r
302 )\r
303 )\r
8014e7ce 304\r
305 if not defined PYTHON_HOME (\r
306 if defined PYTHONHOME (\r
307 set PYTHON_HOME=%PYTHONHOME%\r
308 ) else (\r
309 echo.\r
5d98c319 310 echo !!! ERROR !!! Binary python tools are missing. PYTHON_HOME environment variable is not set. \r
7419aedd 311 echo PYTHON_HOME is required to build or execute the python tools.\r
8014e7ce 312 echo.\r
313 goto end\r
314 )\r
315 )\r
316\r
317 @REM We have Python, now test for FreezePython application\r
318 if not defined PYTHON_FREEZER_PATH (\r
7419aedd
LG
319 echo.\r
320 echo !!! WARNING !!! PYTHON_FREEZER_PATH environment variable is not set.\r
321 echo Setup environment to run Python scripts directly.\r
322 echo.\r
323 set "PATH=%PATH%;%BASE_TOOLS_PATH%\BinWrappers\WindowsLike"\r
8014e7ce 324 )\r
7419aedd
LG
325\r
326 set BASETOOLS_PYTHON_SOURCE=%BASE_TOOLS_PATH%\Source\Python\r
327 set PYTHONPATH=%BASETOOLS_PYTHON_SOURCE%;%PYTHONPATH%\r
35ba063d 328 \r
7419aedd
LG
329 echo PATH = %PATH%\r
330 echo PYTHON_HOME = %PYTHON_HOME%\r
331 echo PYTHONPATH = %PYTHONPATH%\r
332 if defined PYTHON_FREEZER_PATH (\r
333 echo PYTHON_FREEZER_PATH = %PYTHON_FREEZER_PATH%\r
334 )\r
8014e7ce 335 echo.\r
336\r
7419aedd
LG
337:VisualStudioAvailable\r
338 if not defined FORCE_REBUILD (\r
339 if not defined REBUILD (\r
340 goto end\r
341 )\r
342 )\r
e4ac870f
LG
343 call "%EDK_TOOLS_PATH%\get_vsvars.bat"\r
344 if not defined VCINSTALLDIR (\r
345 @echo.\r
346 @echo !!! ERROR !!!! Cannot find Visual Studio, required to build C tools !!!\r
347 @echo.\r
348 goto end\r
8014e7ce 349 )\r
e4ac870f 350 if not defined FORCE_REBUILD goto IncrementalBuild\r
8014e7ce 351\r
352:CleanAndBuild\r
353 pushd .\r
354 cd %BASE_TOOLS_PATH%\r
355 call nmake cleanall\r
356 del /f /q %BASE_TOOLS_PATH%\Bin\Win32\*.*\r
357 popd\r
358 @REM Let CleanAndBuild fall through to IncrementalBuild\r
359\r
360\r
361:IncrementalBuild\r
362 pushd .\r
363 cd %BASE_TOOLS_PATH%\r
364 call nmake c\r
365 popd\r
366\r
367 if defined PYTHON_FREEZER_PATH (\r
368 echo BUILDING PYTHON TOOLS\r
369 pushd .\r
370 cd %BASE_TOOLS_PATH%\r
371 call nmake python\r
372 popd\r
373 ) else (\r
374 echo.\r
375 echo !!! WARNING !!! Cannot make executable from Python code, executing python scripts instead !!!\r
376 echo.\r
377 )\r
378 goto end\r
379\r
380\r
381:no_source_files\r
382 echo.\r
383 echo !!! ERROR !!! Cannot build BaseTools applications - no source directory located !!!\r
384 echo.\r
385 goto end\r
386\r
387:Usage\r
e4ac870f 388 @echo.\r
8014e7ce 389 echo Usage: "%0 [-h | -help | --help | /h | /help | /?] [ Rebuild | ForceRebuild ] [Reconfig] [base_tools_path [edk_tools_path]]"\r
e4ac870f
LG
390 @echo.\r
391 @echo base_tools_path BaseTools project path, BASE_TOOLS_PATH will be set to this path. \r
392 @echo edk_tools_path EDK_TOOLS_PATH will be set to this path.\r
393 @echo Rebuild If sources are available perform an Incremental build, only \r
394 @echo build those updated tools.\r
395 @echo ForceRebuild If sources are available, rebuild all tools regardless of \r
396 @echo whether they have been updated or not.\r
397 @echo Reconfig Reinstall target.txt, tools_def.txt and build_rule.txt.\r
398 @echo.\r
07a756b9 399\r
400:end\r
8014e7ce 401set REBUILD=\r
402set FORCE_REBUILD=\r
403set RECONFIG=\r
404popd\r
405\r