fixed 2 k8 issues.
[edk2.git] / BaseTools / toolsetup.bat
blob58b05d5a4efbd5aa4afeba8614ccc66b2854cb71
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 - 2008, Intel Corporation.  All rights reserved.\r
7 @REM\r
8 @REM This program and the accompanying materials are licensed and made available\r
9 @REM under the terms and conditions of the BSD Licensewhich accompanies this \r
10 @REM distribution.  The full text of the license may be found at:\r
11 @REM   http://opensource.org/licenses/bsd-license.php\r
12 @REM\r
13 @REM THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
14 @REM WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR \r
15 @REM IMPLIED.\r
16 @REM\r
18 @echo off\r
19 pushd .\r
21 @REM ##############################################################\r
22 @REM # You should not have to modify anything below this line\r
23 @REM #\r
25 @if /I "%1"=="-h" goto Usage\r
26 @if /I "%1"=="-help" goto Usage\r
27 @if /I "%1"=="--help" goto Usage\r
28 @if /I "%1"=="/h" goto Usage\r
29 @if /I "%1"=="/help" goto Usage\r
30 @if /I "%1"=="/?" goto Usage\r
33 :loop\r
34   @if "%1"=="" goto setup_workspace\r
35   @if /I "%1"=="--nt32" (\r
36     @REM Ignore --nt32 flag\r
37     shift\r
38     goto loop\r
39   )\r
40   @if /I "%1"=="Reconfig" (\r
41     shift\r
42     set RECONFIG=TRUE\r
43     goto loop\r
44   )\r
45   @if /I "%1"=="Rebuild" (\r
46     shift\r
47     set REBUILD=TRUE\r
48     goto loop\r
49   )\r
50   @if /I "%1"=="ForceRebuild" (\r
51     shift\r
52     set FORCE_REBUILD=TRUE\r
53     goto loop\r
54   )\r
55   if "%1"=="" goto setup_workspace\r
56   if exist %1 (\r
57     if not defined BASE_TOOLS_PATH (\r
58       if exist %1\Source set BASE_TOOLS_PATH=%1\r
59       shift\r
60       goto loop\r
61     )\r
62     if not defined EDK_TOOLS_PATH (\r
63       if exist %1\Bin\Win32 set EDK_TOOLS_PATH=%1\r
64       shift\r
65       goto loop\r
66     )\r
67     echo.\r
68     echo !!! ERROR !!! Unknown argument, %1 !!!\r
69     echo.\r
70     goto end\r
71   ) else (\r
72     echo.\r
73     echo !!! ERROR !!! Unknown argument, %1 !!!\r
74     echo.\r
75     goto end\r
76   )\r
77   goto loop\r
80 @REM\r
81 @REM Check the required system environment variables\r
82 @REM\r
84 :setup_workspace\r
85   REM\r
86   REM check the EDK_TOOLS_PATH\r
87   REM\r
88   if not defined EDK_TOOLS_PATH goto no_EDK_TOOLS_PATH\r
89   if exist %EDK_TOOLS_PATH% goto set_PATH\r
91 :no_EDK_TOOLS_PATH\r
92   if not defined WORKSPACE (\r
93     if defined BASE_TOOLS_PATH (\r
94       set EDK_TOOLS_PATH=%BASE_TOOLS_PATH%\r
95       goto set_PATH\r
96     ) else (\r
97       echo.\r
98       echo !!! ERROR !!! Neither BASE_TOOLS_PATH nor EDK_TOOLS_PATH are set. !!!\r
99       echo.\r
100       goto end\r
101     )\r
102   ) else (\r
103     if exist %WORKSPACE%\BaseTools\Bin (\r
104       set EDK_TOOLS_PATH=%WORKSPACE%\BaseTools\r
105       goto set_PATH\r
106     ) else (\r
107       echo.\r
108       echo !!! ERROR !!! No tools path available. Please set EDK_TOOLS_PATH !!!\r
109       echo.\r
110       goto end\r
111     )\r
112   )\r
114 :set_PATH\r
115   if defined WORKSPACE_TOOLS_PATH goto check_PATH\r
116   set PATH=%EDK_TOOLS_PATH%\Bin;%EDK_TOOLS_PATH%\Bin\Win32;%PATH%\r
117   set WORKSPACE_TOOLS_PATH=%EDK_TOOLS_PATH%\r
118   goto PATH_ok\r
120 :check_PATH\r
121   if "%EDK_TOOLS_PATH%"=="%WORKSPACE_TOOLS_PATH%" goto PATH_ok\r
122   set PATH=%EDK_TOOLS_PATH%\Bin;%EDK_TOOLS_PATH%\Bin\Win32;%PATH%\r
123   set WORKSPACE_TOOLS_PATH=%EDK_TOOLS_PATH%\r
124   echo Resetting the PATH variable to include the EDK_TOOLS_PATH for this session.\r
126 :PATH_ok\r
127   echo           PATH      = %PATH%\r
128   echo.\r
129   if defined WORKSPACE (\r
130     echo      WORKSPACE      = %WORKSPACE%\r
131   )\r
132   echo EDK_TOOLS_PATH      = %EDK_TOOLS_PATH%\r
133   if defined BASE_TOOLS_PATH (\r
134     echo BASE_TOOLS_PATH     = %BASE_TOOLS_PATH%\r
135   )\r
136   echo.\r
138 REM\r
139 REM copy *.template to %WORKSPACE%\Conf\r
140 REM\r
141 if not defined WORKSPACE (\r
142    if defined RECONFIG (\r
143      echo.\r
144      echo !!! WARNING !!! WORKSPACE environment variable was not set, cannot Reconfig !!!\r
145      echo.\r
146    )\r
147    goto skip_reconfig\r
150 if NOT exist %WORKSPACE%\Conf (\r
151   mkdir %WORKSPACE%\Conf\r
152 ) else (\r
153   if defined RECONFIG (\r
154     echo.\r
155     echo  Over-writing the files in the WORKSPACE\Conf directory\r
156     echo  using the default template files\r
157     echo.\r
158   )\r
161 if NOT exist %WORKSPACE%\Conf\FrameworkDatabase.db (\r
162   if defined RECONFIG echo copying ... FrameworkDatabase.template to %WORKSPACE%\Conf\FrameworkDatabase.db\r
163   copy %EDK_TOOLS_PATH%\Conf\FrameworkDatabase.template %WORKSPACE%\Conf\FrameworkDatabase.db > nul\r
164 ) else (\r
165   if defined RECONFIG echo over-write ... FrameworkDatabase.template to %WORKSPACE%\Conf\FrameworkDatabase.db\r
166   if defined RECONFIG copy /Y %EDK_TOOLS_PATH%\Conf\FrameworkDatabase.template %WORKSPACE%\Conf\FrameworkDatabase.db > nul\r
169 if NOT exist %WORKSPACE%\Conf\target.txt (\r
170   echo copying ... target.template to %WORKSPACE%\Conf\target.txt\r
171   copy %EDK_TOOLS_PATH%\Conf\target.template %WORKSPACE%\Conf\target.txt > nul\r
172 ) else (\r
173   if defined RECONFIG echo over-write ... target.template to %WORKSPACE%\Conf\target.txt\r
174   if defined RECONFIG copy /Y %EDK_TOOLS_PATH%\Conf\target.template %WORKSPACE%\Conf\target.txt > nul\r
177 if NOT exist %WORKSPACE%\Conf\tools_def.txt (\r
178   echo copying ... tools_def.template to %WORKSPACE%\Conf\tools_def.txt\r
179   copy %EDK_TOOLS_PATH%\Conf\tools_def.template %WORKSPACE%\Conf\tools_def.txt > nul\r
180 ) else (\r
181   if defined RECONFIG echo over-write ... tools_def.template to %WORKSPACE%\Conf\tools_def.txt\r
182   if defined RECONFIG copy /Y %EDK_TOOLS_PATH%\Conf\tools_def.template %WORKSPACE%\Conf\tools_def.txt > nul\r
185 if NOT exist %WORKSPACE%\Conf\build_rule.txt (\r
186   echo copying ... build_rule.template to %WORKSPACE%\Conf\build_rule.txt\r
187   copy %EDK_TOOLS_PATH%\Conf\build_rule.template %WORKSPACE%\Conf\build_rule.txt > nul\r
188 ) else (\r
189   if defined RECONFIG echo over-write ... build_rule.template to %WORKSPACE%\Conf\build_rule.txt\r
190   if defined RECONFIG copy /Y %EDK_TOOLS_PATH%\Conf\build_rule.template %WORKSPACE%\Conf\build_rule.txt > nul\r
193 :skip_reconfig\r
195 @REM\r
196 @REM Test if we are going to have to do a build\r
197 @REM\r
198 if defined FORCE_REBUILD goto check_build_environment\r
199 if defined REBUILD goto check_build_environment\r
200 if not exist "%EDK_TOOLS_PATH%\Bin" goto check_build_environment\r
202 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\BootSectImage.exe" goto check_build_environment\r
203 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\build.exe" goto check_build_environment\r
204 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\EfiLdrImage.exe" goto check_build_environment\r
205 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\EfiRom.exe" goto check_build_environment\r
206 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\GenBootSector.exe" goto check_build_environment\r
207 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\GenFds.exe" goto check_build_environment\r
208 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\GenFfs.exe" goto check_build_environment\r
209 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\GenFv.exe" goto check_build_environment\r
210 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\GenFw.exe" goto check_build_environment\r
211 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\GenPage.exe" goto check_build_environment\r
212 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\GenSec.exe" goto check_build_environment\r
213 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\GenVtf.exe" goto check_build_environment\r
214 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\MigrationMsa2Inf.exe" goto check_build_environment\r
215 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\Split.exe" goto check_build_environment\r
216 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\TargetTool.exe" goto check_build_environment\r
217 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\TianoCompress.exe" goto check_build_environment\r
218 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\Trim.exe" goto check_build_environment\r
219 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\VfrCompile.exe" goto check_build_environment\r
220 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\Fpd2Dsc.exe" goto check_build_environment\r
221 IF NOT EXIST "%EDK_TOOLS_PATH%\Bin\Win32\VolInfo.exe" goto check_build_environment\r
223 goto end\r
225 :check_build_environment\r
227   if not defined FORCE_REBUILD (\r
228     echo.\r
229     echo Rebuilding of tools is not required.  Binaries of the latest,\r
230     echo tested versions of the tools have been tested and included in the\r
231     echo EDK II repository.\r
232     echo.\r
233     echo If you really want to build the tools, use the ForceRebuild option.\r
234     echo.\r
235     goto end\r
236   )\r
238   if not defined BASE_TOOLS_PATH (\r
239      if not exist "Source\C\Makefile" (\r
240        if not exist "%EDK_TOOLS_PATH%\Source\C\Makefile" goto no_source_files\r
241        set BASE_TOOLS_PATH=%EDK_TOOLS_PATH%\r
242      ) else (\r
243        set BASE_TOOLS_PATH=%CD%\r
244      )\r
245   )\r
246   set PATH=%BASE_TOOLS_PATH%\Bin\Win32;%PATH%\r
248   set PYTHONPATH=%BASE_TOOLS_PATH%\Source\Python\r
250   if not defined PYTHON_HOME (\r
251     if defined PYTHONHOME (\r
252       set PYTHON_HOME=%PYTHONHOME%\r
253     ) else (\r
254       echo.\r
255       echo  !!! ERROR !!! PYTHON is required to build or execute the tools !!!\r
256       echo.\r
257       goto end\r
258     )\r
259   )\r
261   @REM We have Python, now test for FreezePython application\r
262   if not defined PYTHON_FREEZER_PATH (\r
263     @REM see if we can find FreezePython.ex\r
264     if exist "%PYTHON_HOME%\Tools\cx_Freeze-3.0.3\FreezePython.exe" (\r
265       set PYTHON_FREEZER_PATH=%PYTHON_HOME%\Tools\cx_Freeze-3.0.3\r
266     ) \r
267     if exist "%PYTHON_HOME%\Tools\cx_Freeze\FreezePython.exe" (\r
268       set PYTHON_FREEZER_PATH=%PYTHON_HOME%\Tools\cx_Freeze\r
269     ) \r
270     if exist "C:\cx_Freeze\FreezePython.exe" (\r
271         set PYTHON_FREEZER_PATH=C:\cx_Freeze\r
272     )\r
273     if exist "C:\cx_Freeze-3.0.3" (\r
274         set PYTHON_FREEZER_PATH=C:\cx_Freeze-3.0.3\r
275     )\r
276     if not defined PYTHON_FREEZER_PATH (\r
277       echo.\r
278       echo !!! WARNING !!! Will not be able to compile Python programs to .exe\r
279       echo Will setup environment to run Python scripts directly.\r
280       echo.\r
281       set PYTHONPATH=%BASE_TOOLS_PATH%\Source\Python\r
282       set PATH=%PYTHONPATH%\build;%PYTHONPATH%\GenFds;%PYTHONPATH%\Trim;%PATH%\r
283       set PATHEXT=%PATHEXT%;.py\r
284     )\r
285   )\r
286   \r
287   echo BASE_TOOLS_PATH     = %BASE_TOOLS_PATH%\r
288   echo     PYTHON_PATH     = %PYTHON_PATH%\r
289   echo PYTHON_FREEZER_PATH = %PYTHON_FREEZER_PATH%\r
290   echo.\r
292   if defined VCINSTALLDIR goto VisualStudioAvailable\r
293   if defined VS71COMNTOOLS (\r
294     call "%VS71COMNTOOLS%\vsvars32.bat"\r
295   ) else (\r
296     if defined VS80COMNTOOLS (\r
297       call "%VS80COMNTOOLS%\vsvars32.bat"\r
298     ) else (\r
299       echo.\r
300       echo !!! ERROR !!!! Cannot find Visual Studio, required to build C tools !!!\r
301       echo.\r
302       goto end\r
303     )\r
304   )\r
306 :VisualStudioAvailable\r
307   if defined FORCE_REBUILD goto CleanAndBuild\r
308   goto IncrementalBuild\r
310 :CleanAndBuild\r
311   pushd .\r
312   cd %BASE_TOOLS_PATH%\r
313   call nmake cleanall\r
314   del /f /q %BASE_TOOLS_PATH%\Bin\Win32\*.*\r
315   popd\r
316   @REM Let CleanAndBuild fall through to IncrementalBuild\r
319 :IncrementalBuild\r
320   pushd .\r
321   cd %BASE_TOOLS_PATH%\r
322   call nmake c\r
323   popd\r
325   if defined PYTHON_FREEZER_PATH (\r
326     echo BUILDING PYTHON TOOLS\r
327     pushd .\r
328     cd %BASE_TOOLS_PATH%\r
329     call nmake python\r
330     popd\r
331   ) else (\r
332     echo.\r
333     echo !!! WARNING !!! Cannot make executable from Python code, executing python scripts instead !!!\r
334     echo.\r
335   )\r
336   goto end\r
339 :no_source_files\r
340   echo.\r
341   echo !!! ERROR !!! Cannot build BaseTools applications - no source directory located !!!\r
342   echo.\r
343   goto end\r
345 :Usage\r
346   echo.\r
347   echo  Usage: "%0 [-h | -help | --help | /h | /help | /?] [ Rebuild | ForceRebuild ] [Reconfig] [base_tools_path [edk_tools_path]]"\r
348   echo.\r
349   echo         base_tools_path   BaseTools project path, BASE_TOOLS_PATH will be set to this path. \r
350   echo         edk_tools_path    EDK_TOOLS_PATH will be set to this path.\r
351   echo         Rebuild           If sources are available perform an Incremental build, only \r
352   echo                           build those updated tools.\r
353   echo         ForceRebuild      If sources are available, rebuild all tools regardless of \r
354   echo                           whether they have been updated or not.\r
355   echo         Reconfig          Reinstall target.txt, tools_def.txt and build_rule.txt.\r
356 echo.\r
358 :end\r
359 set REBUILD=\r
360 set FORCE_REBUILD=\r
361 set RECONFIG=\r
362 popd\r
364 @echo on\r