]> git.proxmox.com Git - mirror_edk2.git/blame - BaseTools/toolsetup.bat
BaseTools: Clean up tools_def.template for XCODE5
[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
61e94745 124 set "PATH=%EDK_TOOLS_PATH%\Bin\Win32;%PATH%"\r
dcc80786
LG
125 echo.\r
126 echo !!! ERROR !!! Cannot find BaseTools Bin Win32!!!\r
127 echo Please check the directory %EDK_TOOLS_PATH%\Bin\Win32\r
128 echo Or configure EDK_TOOLS_BIN env to point Win32 directory.\r
129 echo. \r
5d98c319 130 goto check_build_environment\r
dcc80786
LG
131 )\r
132 )\r
133 set PATH=%EDK_TOOLS_BIN%;%PATH%\r
8014e7ce 134 set WORKSPACE_TOOLS_PATH=%EDK_TOOLS_PATH%\r
135 goto PATH_ok\r
07a756b9 136\r
8014e7ce 137:check_PATH\r
138 if "%EDK_TOOLS_PATH%"=="%WORKSPACE_TOOLS_PATH%" goto PATH_ok\r
dcc80786
LG
139 if not defined EDK_TOOLS_BIN (\r
140 if exist %EDK_TOOLS_PATH%\Bin\Win32 (\r
141 set EDK_TOOLS_BIN=%EDK_TOOLS_PATH%\Bin\Win32\r
142 ) else (\r
61e94745 143 set "PATH=%EDK_TOOLS_PATH%\Bin\Win32;%PATH%"\r
dcc80786
LG
144 echo.\r
145 echo !!! ERROR !!! Cannot find BaseTools Bin Win32!!!\r
146 echo Please check the directory %EDK_TOOLS_PATH%\Bin\Win32\r
147 echo Or configure EDK_TOOLS_BIN env to point Win32 directory.\r
148 echo. \r
5d98c319 149 goto check_build_environment\r
dcc80786
LG
150 )\r
151 )\r
152 set PATH=%EDK_TOOLS_BIN%;%PATH%\r
8014e7ce 153 set WORKSPACE_TOOLS_PATH=%EDK_TOOLS_PATH%\r
154 echo Resetting the PATH variable to include the EDK_TOOLS_PATH for this session.\r
07a756b9 155\r
8014e7ce 156:PATH_ok\r
07a756b9 157REM\r
dcc80786 158REM copy *.template to %CONF_PATH%\r
07a756b9 159REM\r
8014e7ce 160if not defined WORKSPACE (\r
161 if defined RECONFIG (\r
162 echo.\r
163 echo !!! WARNING !!! WORKSPACE environment variable was not set, cannot Reconfig !!!\r
164 echo.\r
165 )\r
166 goto skip_reconfig\r
167)\r
168\r
314b26a8
YZ
169IF NOT exist "%EDK_TOOLS_PATH%\set_vsprefix_envs.bat" (\r
170 @echo.\r
171 @echo !!! ERROR !!! The set_vsprefix_envs.bat was not found !!!\r
172 @echo.\r
173 goto end\r
174)\r
175call %EDK_TOOLS_PATH%\set_vsprefix_envs.bat\r
176\r
1f2cd652
MH
177if not defined CONF_PATH (\r
178 set CONF_PATH=%WORKSPACE%\Conf\r
ae5cc3c3 179)\r
1f2cd652 180\r
ae5cc3c3
HW
181if NOT exist %CONF_PATH% (\r
182 if defined PACKAGES_PATH (\r
183 for %%i IN (%PACKAGES_PATH%) DO (\r
184 if exist %%~fi\Conf (\r
185 set CONF_PATH=%%i\Conf\r
186 goto CopyConf\r
dcc80786
LG
187 )\r
188 )\r
189 )\r
190)\r
191 \r
192:CopyConf\r
193if NOT exist %CONF_PATH% (\r
194 mkdir %CONF_PATH%\r
07a756b9 195) else (\r
8014e7ce 196 if defined RECONFIG (\r
07a756b9 197 echo.\r
dcc80786 198 echo Over-writing the files in the CONF_PATH directory\r
07a756b9 199 echo using the default template files\r
200 echo.\r
201 )\r
202)\r
8014e7ce 203\r
dcc80786
LG
204if NOT exist %CONF_PATH%\target.txt (\r
205 echo copying ... target.template to %CONF_PATH%\target.txt\r
884f6e76 206 if NOT exist %EDK_TOOLS_PATH%\Conf\target.template (\r
207 echo Error: target.template is missing at folder %EDK_TOOLS_PATH%\Conf\\r
208 )\r
dcc80786 209 copy %EDK_TOOLS_PATH%\Conf\target.template %CONF_PATH%\target.txt > nul\r
07a756b9 210) else (\r
dcc80786
LG
211 if defined RECONFIG echo over-write ... target.template to %CONF_PATH%\target.txt\r
212 if defined RECONFIG copy /Y %EDK_TOOLS_PATH%\Conf\target.template %CONF_PATH%\target.txt > nul\r
07a756b9 213)\r
8014e7ce 214\r
dcc80786
LG
215if NOT exist %CONF_PATH%\tools_def.txt (\r
216 echo copying ... tools_def.template to %CONF_PATH%\tools_def.txt\r
884f6e76 217 if NOT exist %EDK_TOOLS_PATH%\Conf\tools_def.template (\r
218 echo Error: tools_def.template is missing at folder %EDK_TOOLS_PATH%\Conf\\r
219 )\r
dcc80786 220 copy %EDK_TOOLS_PATH%\Conf\tools_def.template %CONF_PATH%\tools_def.txt > nul\r
07a756b9 221) else (\r
dcc80786
LG
222 if defined RECONFIG echo over-write ... tools_def.template to %CONF_PATH%\tools_def.txt\r
223 if defined RECONFIG copy /Y %EDK_TOOLS_PATH%\Conf\tools_def.template %CONF_PATH%\tools_def.txt > nul\r
07a756b9 224)\r
8014e7ce 225\r
dcc80786
LG
226if NOT exist %CONF_PATH%\build_rule.txt (\r
227 echo copying ... build_rule.template to %CONF_PATH%\build_rule.txt\r
884f6e76 228 if NOT exist %EDK_TOOLS_PATH%\Conf\build_rule.template (\r
229 echo Error: build_rule.template is missing at folder %EDK_TOOLS_PATH%\Conf\\r
230 )\r
dcc80786 231 copy %EDK_TOOLS_PATH%\Conf\build_rule.template %CONF_PATH%\build_rule.txt > nul\r
07a756b9 232) else (\r
dcc80786
LG
233 if defined RECONFIG echo over-write ... build_rule.template to %CONF_PATH%\build_rule.txt\r
234 if defined RECONFIG copy /Y %EDK_TOOLS_PATH%\Conf\build_rule.template %CONF_PATH%\build_rule.txt > nul\r
07a756b9 235)\r
236\r
dcc80786
LG
237echo PATH = %PATH%\r
238echo.\r
239if defined WORKSPACE (\r
240 echo WORKSPACE = %WORKSPACE%\r
241)\r
242if defined PACKAGES_PATH (\r
243 echo PACKAGES_PATH = %PACKAGES_PATH%\r
244)\r
245echo EDK_TOOLS_PATH = %EDK_TOOLS_PATH%\r
246if defined BASE_TOOLS_PATH (\r
247 echo BASE_TOOLS_PATH = %BASE_TOOLS_PATH%\r
248)\r
249if defined EDK_TOOLS_BIN (\r
250 echo EDK_TOOLS_BIN = %EDK_TOOLS_BIN%\r
251)\r
252echo CONF_PATH = %CONF_PATH%\r
253echo.\r
254\r
8014e7ce 255:skip_reconfig\r
256\r
257@REM\r
258@REM Test if we are going to have to do a build\r
259@REM\r
260if defined FORCE_REBUILD goto check_build_environment\r
261if defined REBUILD goto check_build_environment\r
dcc80786
LG
262if not exist "%EDK_TOOLS_PATH%" goto check_build_environment\r
263\r
7419aedd
LG
264IF NOT EXIST "%EDK_TOOLS_BIN%\BootSectImage.exe" goto check_c_tools\r
265IF NOT EXIST "%EDK_TOOLS_BIN%\EfiLdrImage.exe" goto check_c_tools\r
266IF NOT EXIST "%EDK_TOOLS_BIN%\EfiRom.exe" goto check_c_tools\r
267IF NOT EXIST "%EDK_TOOLS_BIN%\GenBootSector.exe" goto check_c_tools\r
268IF NOT EXIST "%EDK_TOOLS_BIN%\GenFfs.exe" goto check_c_tools\r
269IF NOT EXIST "%EDK_TOOLS_BIN%\GenFv.exe" goto check_c_tools\r
270IF NOT EXIST "%EDK_TOOLS_BIN%\GenFw.exe" goto check_c_tools\r
271IF NOT EXIST "%EDK_TOOLS_BIN%\GenPage.exe" goto check_c_tools\r
272IF NOT EXIST "%EDK_TOOLS_BIN%\GenSec.exe" goto check_c_tools\r
273IF NOT EXIST "%EDK_TOOLS_BIN%\GenVtf.exe" goto check_c_tools\r
274IF NOT EXIST "%EDK_TOOLS_BIN%\Split.exe" goto check_c_tools\r
275IF NOT EXIST "%EDK_TOOLS_BIN%\TianoCompress.exe" goto check_c_tools\r
276IF NOT EXIST "%EDK_TOOLS_BIN%\VfrCompile.exe" goto check_c_tools\r
277IF NOT EXIST "%EDK_TOOLS_BIN%\VolInfo.exe" goto check_c_tools\r
278\r
279goto check_python_tools\r
280\r
281:check_c_tools\r
282 echo.\r
283 echo !!! ERROR !!! Binary C tools are missing. They are requried to be built from BaseTools Source.\r
284 echo.\r
5d98c319 285 goto check_build_environment\r
7419aedd
LG
286\r
287:check_python_tools\r
dcc80786 288IF NOT EXIST "%EDK_TOOLS_BIN%\build.exe" goto check_build_environment\r
dcc80786 289IF NOT EXIST "%EDK_TOOLS_BIN%\GenFds.exe" goto check_build_environment\r
dcc80786 290IF NOT EXIST "%EDK_TOOLS_BIN%\TargetTool.exe" goto check_build_environment\r
dcc80786 291IF NOT EXIST "%EDK_TOOLS_BIN%\Trim.exe" goto check_build_environment\r
07a756b9 292\r
07a756b9 293goto end\r
294\r
8014e7ce 295:check_build_environment\r
7419aedd 296 if defined BASETOOLS_PYTHON_SOURCE goto VisualStudioAvailable\r
8014e7ce 297\r
298 if not defined BASE_TOOLS_PATH (\r
299 if not exist "Source\C\Makefile" (\r
300 if not exist "%EDK_TOOLS_PATH%\Source\C\Makefile" goto no_source_files\r
301 set BASE_TOOLS_PATH=%EDK_TOOLS_PATH%\r
302 ) else (\r
303 set BASE_TOOLS_PATH=%CD%\r
304 )\r
305 )\r
8014e7ce 306\r
307 if not defined PYTHON_HOME (\r
308 if defined PYTHONHOME (\r
309 set PYTHON_HOME=%PYTHONHOME%\r
310 ) else (\r
311 echo.\r
5d98c319 312 echo !!! ERROR !!! Binary python tools are missing. PYTHON_HOME environment variable is not set. \r
7419aedd 313 echo PYTHON_HOME is required to build or execute the python tools.\r
8014e7ce 314 echo.\r
315 goto end\r
316 )\r
317 )\r
318\r
319 @REM We have Python, now test for FreezePython application\r
320 if not defined PYTHON_FREEZER_PATH (\r
7419aedd
LG
321 echo.\r
322 echo !!! WARNING !!! PYTHON_FREEZER_PATH environment variable is not set.\r
323 echo Setup environment to run Python scripts directly.\r
324 echo.\r
325 set "PATH=%PATH%;%BASE_TOOLS_PATH%\BinWrappers\WindowsLike"\r
8014e7ce 326 )\r
7419aedd
LG
327\r
328 set BASETOOLS_PYTHON_SOURCE=%BASE_TOOLS_PATH%\Source\Python\r
329 set PYTHONPATH=%BASETOOLS_PYTHON_SOURCE%;%PYTHONPATH%\r
35ba063d 330 \r
7419aedd
LG
331 echo PATH = %PATH%\r
332 echo PYTHON_HOME = %PYTHON_HOME%\r
333 echo PYTHONPATH = %PYTHONPATH%\r
334 if defined PYTHON_FREEZER_PATH (\r
335 echo PYTHON_FREEZER_PATH = %PYTHON_FREEZER_PATH%\r
336 )\r
8014e7ce 337 echo.\r
338\r
7419aedd
LG
339:VisualStudioAvailable\r
340 if not defined FORCE_REBUILD (\r
341 if not defined REBUILD (\r
342 goto end\r
343 )\r
344 )\r
e4ac870f
LG
345 call "%EDK_TOOLS_PATH%\get_vsvars.bat"\r
346 if not defined VCINSTALLDIR (\r
347 @echo.\r
348 @echo !!! ERROR !!!! Cannot find Visual Studio, required to build C tools !!!\r
349 @echo.\r
350 goto end\r
8014e7ce 351 )\r
e4ac870f 352 if not defined FORCE_REBUILD goto IncrementalBuild\r
8014e7ce 353\r
354:CleanAndBuild\r
355 pushd .\r
356 cd %BASE_TOOLS_PATH%\r
357 call nmake cleanall\r
358 del /f /q %BASE_TOOLS_PATH%\Bin\Win32\*.*\r
359 popd\r
360 @REM Let CleanAndBuild fall through to IncrementalBuild\r
361\r
362\r
363:IncrementalBuild\r
364 pushd .\r
365 cd %BASE_TOOLS_PATH%\r
366 call nmake c\r
367 popd\r
368\r
369 if defined PYTHON_FREEZER_PATH (\r
370 echo BUILDING PYTHON TOOLS\r
371 pushd .\r
372 cd %BASE_TOOLS_PATH%\r
373 call nmake python\r
374 popd\r
375 ) else (\r
376 echo.\r
377 echo !!! WARNING !!! Cannot make executable from Python code, executing python scripts instead !!!\r
378 echo.\r
379 )\r
380 goto end\r
381\r
382\r
383:no_source_files\r
384 echo.\r
385 echo !!! ERROR !!! Cannot build BaseTools applications - no source directory located !!!\r
386 echo.\r
387 goto end\r
388\r
389:Usage\r
e4ac870f 390 @echo.\r
8014e7ce 391 echo Usage: "%0 [-h | -help | --help | /h | /help | /?] [ Rebuild | ForceRebuild ] [Reconfig] [base_tools_path [edk_tools_path]]"\r
e4ac870f
LG
392 @echo.\r
393 @echo base_tools_path BaseTools project path, BASE_TOOLS_PATH will be set to this path. \r
394 @echo edk_tools_path EDK_TOOLS_PATH will be set to this path.\r
395 @echo Rebuild If sources are available perform an Incremental build, only \r
396 @echo build those updated tools.\r
397 @echo ForceRebuild If sources are available, rebuild all tools regardless of \r
398 @echo whether they have been updated or not.\r
399 @echo Reconfig Reinstall target.txt, tools_def.txt and build_rule.txt.\r
400 @echo.\r
07a756b9 401\r
402:end\r
8014e7ce 403set REBUILD=\r
404set FORCE_REBUILD=\r
405set RECONFIG=\r
406popd\r
407\r