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
6 @REM Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
\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
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
21 @REM ##############################################################
\r
22 @REM # You should not have to modify anything below this line
\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
34 @if "%1"=="" goto setup_workspace
\r
35 @if /I "%1"=="--nt32" (
\r
36 @REM Ignore --nt32 flag
\r
40 @if /I "%1"=="Reconfig" (
\r
45 @if /I "%1"=="Rebuild" (
\r
50 @if /I "%1"=="ForceRebuild" (
\r
52 set FORCE_REBUILD=TRUE
\r
55 if "%1"=="" goto setup_workspace
\r
57 if not defined BASE_TOOLS_PATH (
\r
58 if exist %1\Source set BASE_TOOLS_PATH=%1
\r
62 if not defined EDK_TOOLS_PATH (
\r
63 if exist %1\Bin\Win32 set EDK_TOOLS_PATH=%1
\r
68 echo !!! ERROR !!! Unknown argument, %1 !!!
\r
73 echo !!! ERROR !!! Unknown argument, %1 !!!
\r
81 @REM Check the required system environment variables
\r
86 REM check the EDK_TOOLS_PATH
\r
88 if not defined EDK_TOOLS_PATH goto no_EDK_TOOLS_PATH
\r
89 if exist %EDK_TOOLS_PATH% goto set_PATH
\r
92 if not defined WORKSPACE (
\r
93 if defined BASE_TOOLS_PATH (
\r
94 set EDK_TOOLS_PATH=%BASE_TOOLS_PATH%
\r
98 echo !!! ERROR !!! Neither BASE_TOOLS_PATH nor EDK_TOOLS_PATH are set. !!!
\r
103 if exist %WORKSPACE%\BaseTools\Bin (
\r
104 set EDK_TOOLS_PATH=%WORKSPACE%\BaseTools
\r
108 echo !!! ERROR !!! No tools path available. Please set EDK_TOOLS_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
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
129 if defined WORKSPACE (
\r
130 echo WORKSPACE = %WORKSPACE%
\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
139 REM copy *.template to %WORKSPACE%\Conf
\r
141 if not defined WORKSPACE (
\r
142 if defined RECONFIG (
\r
144 echo !!! WARNING !!! WORKSPACE environment variable was not set, cannot Reconfig !!!
\r
150 if NOT exist %WORKSPACE%\Conf (
\r
151 mkdir %WORKSPACE%\Conf
\r
153 if defined RECONFIG (
\r
155 echo Over-writing the files in the WORKSPACE\Conf directory
\r
156 echo using the default template files
\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
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
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
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
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
196 @REM Test if we are going to have to do a build
\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
225 :check_build_environment
\r
227 if not defined FORCE_REBUILD (
\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
233 echo If you really want to build the tools, use the ForceRebuild option.
\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
243 set BASE_TOOLS_PATH=%CD%
\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
255 echo !!! ERROR !!! PYTHON is required to build or execute the tools !!!
\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
267 if exist "%PYTHON_HOME%\Tools\cx_Freeze\FreezePython.exe" (
\r
268 set PYTHON_FREEZER_PATH=%PYTHON_HOME%\Tools\cx_Freeze
\r
270 if exist "C:\cx_Freeze\FreezePython.exe" (
\r
271 set PYTHON_FREEZER_PATH=C:\cx_Freeze
\r
273 if exist "C:\cx_Freeze-3.0.3" (
\r
274 set PYTHON_FREEZER_PATH=C:\cx_Freeze-3.0.3
\r
276 if not defined PYTHON_FREEZER_PATH (
\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
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
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
292 if defined VCINSTALLDIR goto VisualStudioAvailable
\r
293 if defined VS71COMNTOOLS (
\r
294 call "%VS71COMNTOOLS%\vsvars32.bat"
\r
296 if defined VS80COMNTOOLS (
\r
297 call "%VS80COMNTOOLS%\vsvars32.bat"
\r
300 echo !!! ERROR !!!! Cannot find Visual Studio, required to build C tools !!!
\r
306 :VisualStudioAvailable
\r
307 if defined FORCE_REBUILD goto CleanAndBuild
\r
308 goto IncrementalBuild
\r
312 cd %BASE_TOOLS_PATH%
\r
313 call nmake cleanall
\r
314 del /f /q %BASE_TOOLS_PATH%\Bin\Win32\*.*
\r
316 @REM Let CleanAndBuild fall through to IncrementalBuild
\r
321 cd %BASE_TOOLS_PATH%
\r
325 if defined PYTHON_FREEZER_PATH (
\r
326 echo BUILDING PYTHON TOOLS
\r
328 cd %BASE_TOOLS_PATH%
\r
333 echo !!! WARNING !!! Cannot make executable from Python code, executing python scripts instead !!!
\r
341 echo !!! ERROR !!! Cannot build BaseTools applications - no source directory located !!!
\r
347 echo Usage: "%0 [-h | -help | --help | /h | /help | /?] [ Rebuild | ForceRebuild ] [Reconfig] [base_tools_path [edk_tools_path]]"
\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