2 @REM Windows batch file
, Edk2Setup.bat
, to
set up an EDK II build environment
4 @REM This script will be renamed to edksetup.bat after initial testing and
5 @REM acceptance by the open source community.
7 @REM This script will
set the following system environment variables
:
8 @REM WORKSPACE
, EDK_TOOLS_PATH
, PATH
9 @REM
If rebuilding the tools
:
10 @REM BASE_TOOLS_PATH
, PYTHON_FREEZER_PATH
, PYTHONPATH
11 @REM It will also create a Conf
/target.txt
, tools_def.txt and build_rule.txt
files
12 @REM
if they
do not exist
13 @REM
If the reset flag is
set, all environment variables will be reset and
14 @REM the Conf
/target.txt
, tools_def.txt and build_rule.txt
files will be overwritten
16 @REM Three other scripts
, located in the BaseTools\Scripts directory
, may be called
18 @REM SetVisualStudio.bat
- will
set the Visual Studio environment based on the
--vs
* flags
19 @REM it is also used to build the Win32 binaries
, calling nmake
20 @REM using the WORKSPACE\BaseTools\Makefile
21 @REM ShowEnvironment.bat
- will display the current EDK II Build environment
22 @REM UpdateBuildVersions.py
- script is called prior to building the EDK II BaseTools from
23 @REM Sources. This tool will modify the BuildVersion.
* files so that
24 @REM
when the tools get built
, they will have a custom version entry
25 @REM similar to the following
:
26 @REM e
:\edk2
>build
--version
27 @REM build.exe Version
0.51 Developer Build based on Revision
: 15668
29 @REM Copyright
(c
) 2014, Intel Corporation. All rights reserved.
<BR
>
30 @REM This program and the accompanying materials
31 @REM are licensed and made available under the terms and conditions of the BSD License
32 @REM which accompanies this distribution. The full text of the license may be found at
33 @REM http
://opensource.org
/licenses
/bsd
-license.php
35 @REM THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN
"AS IS" BASIS
,
36 @REM WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND
, EITHER EXPRESS OR IMPLIED.
40 @REM Edk2Setup.bat
[--help |
-h
] [-v |
--version
] [-r |
--reset
]
41 @REM
[--reconfig
] [--edk
-tools
-path DirName
]
42 @REM
[--pull
[Directory
]|
--rebuild
[Directory
]]
45 @REM ##############################################################
46 @REM # You should
not have to modify anything below this line
50 @
set SCRIPT_VERSION
=0.9.2.
51 @
set SVN_REVISION
=$Revision$
52 @
set RESET_ENVIRONMENT
=FALSE
55 @
set BUILD_TOOLS_WITH
=
61 @
set SCRIPT
=EDKSETUP_BAT
63 @
if not defined ORIGINAL_PATH
set "ORIGINAL_PATH=%PATH%"
64 @REM Always
set the WORKSPACE environment variable to the current directory
66 @
if exist "%WORKSPACE%\BaseTools" @
set "BASE_TOOLS_PATH=%WORKSPACE%\BaseTools"
67 @
if not exist "%WORKSPACE%\Conf" @
mkdir "%WORKSPACE%\Conf"
69 @@
if not defined EDK_TOOLS_PATH @
set "EDK_TOOLS_PATH=%WORKSPACE%\BaseTools"
70 @rem @
set "PATH=%WORKSPACE%\BaseTools\Bin\Win32;%PATH%"
71 @rem @
set WORKSPACE_TOOLS_PATH
=%WORKSPACE%\BaseTools
74 @REM Keep the existing EDK_TOOLS_PATH value
, the
--reset flag will
set it
75 @REM back to WORKSPACE\BaseTools while the
--location DIRECTORY flag will
76 @REM still take precedence
if the location option follows the reset option
77 @REM on the
command line.
78 @
if defined EDK_TOOLS_PATH @
set "LOCATION=%EDK_TOOLS_PATH%"
81 @
if "%1"=="" @
goto MainRoutine
82 @
if /I
"%1"=="-h" @
goto Usage
83 @
if /I
"%1"=="--help" @
goto Usage
84 @
if /I
"%1"=="/?" @
goto Usage
85 @
if /I
"%1"=="--version" @
goto Version
87 @REM These options will reset the system environment
89 @
setlocal EnableDelayedExpansion
91 @
set "EDK_TOOLS_PATH=%CD%\BaseTools"
92 @
set "LOCATION=!EDK_TOOLS_PATH!"
97 @
if /I
"%1"=="--reset" (
99 @
set "EDK_TOOLS_PATH=%WORKSPACE%\BaseTools"
100 @
set "LOCATION=%WORKSPACE%\BaseTools"
105 @REM This option is used to overwrite the Conf
/*.txt
files with the
106 @REM WORKSPACE\BaseTools\Conf\
*.template
files.
107 @
if /I
"%1"=="--reconfig" (
113 @REM This option can be used to
set the EDK_TOOLS_PATH containing the Win32 binaries to an
114 @REM alternate directory
115 @
if /I
"%1"=="--edk-tools-path" (
116 @
setlocal EnableDelayedExpansion
118 @
if "!ARGUMENT:~0,2!"=="--" (
120 @
echo ERROR
: The
--edk
-tools
-path flag requires an argument
126 @
set "LOCATION=%WORKSPACE%\%2"
132 @REM Force pulling updated
(or checkout
if they
do not exist) from SVN
for the BaseTools\Bin\Win32 directory
133 @REM or the directory pointed to by the
--location option
134 @
if /I
"%1"=="--pull" (
135 @
if "%REBUILD_TOOLS%"=="TRUE" (
137 @
echo ERROR
: The
--pull option may
not be used with the
--rebuild option
142 @
setlocal EnableDelayedExpansion
144 @
if not "!ARGUMENT:~0,2!"=="--" (
153 @REM This options forces rebuilding the tools
(provided the required tools are available
154 @
if /I
"%1"=="--rebuild" (
155 @
if "%SVN_PULL%"=="TRUE" (
157 @
echo ERROR
: The
--reset option may
not be used with the
--pull option
161 @
set REBUILD_TOOLS
=TRUE
162 @
setlocal EnableDelayedExpansion
164 @
if not "!ARGUMENT:~0,2!"=="--" (
173 @REM This option will try to
set the compiler environment
for building Nt32Pkg
/Nt32Pkg.dsc
174 @REM
If the compiler environment is already installed
, then no additional work is required.
175 @
if /I
"%1"=="--nt32" (
177 @
if not defined BUILD_TOOLS_WITH
(
178 @
set BUILD_TOOLS_WITH
=Latest
180 @REM This option will try to
set the environment
for building the Nt32Pkg
/Nt32Pkg
; on a
64-bit
190 @
if not "%1"=="" goto UnknownOptionOrArgument
194 @
echo Usage
: %SCRIPT_NAME% [Options
]
195 @
echo Copyright
(c
) 2014, Intel Corporation. All rights reserved.
197 @
echo The system environment variable
, WORKSPACE
, is always
set to the current
198 @
echo working directory.
201 @
echo --help
, -h
Print this help screen and
exit.
203 @
echo --version
Print this script
's version and exit.
205 @echo --reset, -r Reset the EDK_TOOLS_PATH and PATH system environment
206 @echo variables. The EDK_TOOLS_PATH default is
207 @echo WORKSPACE\BaseTools, however, it may be overridden by
208 @echo arguments given to the --edk-tools-path, --pull and/or
209 @echo --rebuild options.
210 @echo Once set, the EDK_TOOLS_PATH environment variable reset
211 @echo by opening up a new command prompt window or through one
212 @echo of the options provided by this tool
214 @echo --reconfig Overwrite the WORKSPACE/Conf/*.txt files with the
215 @echo template files from the BaseTools/Conf directory.
217 @echo --edk-tools-path DIRECTORY
218 @echo This option sets the EDK_TOOLS_PATH to the DIRECTORY
219 @echo value instead of the default (WORKSPACE\BaseTools).
221 @echo --nt32 [X64] If a compiler tool chain is not available in the
222 @echo environment, call a script to attempt to set one up.
223 @echo This flag is only required if building the
224 @echo Nt32Pkg/Nt32Pkg.dsc system emulator.
225 @echo If the X64 argument is set, and a compiler tool chain is
226 @echo not available, attempt to set up a tool chain that will
227 @echo create X64 binaries. Setting these two options have the
228 @echo potential side effect of changing tool chains used for a
233 @echo --pull [DIRECTORY] Get the EDK II BaseTools binaries from source control
234 @echo (must not be used with --rebuild).
235 @echo If the optional DIRECTORY argument is specified, the tool
236 @echo sets EDK_TOOLS_PATH to DIRECTORY.
237 @echo If the DIRECTORY argument is not specified, the tools are
238 @echo placed in the directory tree pointed to by the current
239 @echo EDK_TOOLS_PATH environment variable. If the binaries
240 @echo cannot be obtained from source control, the
241 @echo EDK_TOOLS_PATH will be set to the default,
242 @echo WORKSPACE\BaseTools directory.
244 @echo --rebuild [DIRECTORY]
245 @echo Force Rebuilding the EDK II BaseTools from source
246 @echo (must not be used with --pull).
247 @echo NOTE: The build will use whatever compiler tool set
248 @echo is available in the environment prior to
249 @echo running edksetup.bat.
250 @echo If the optional DIRECTORY argument is specified, the tool
251 @echo sets EDK_TOOLS_PATH to DIRECTORY. Tools binaries will be
252 @echo placed in the appropriate subdirectory in the
253 @echo EDK_TOOLS_PATH directory. If the build fails, the
254 @echo EDK_TOOLS_PATH will be set to the default,
255 @echo WORKSPACE\BaseTools directory.
259 @echo %SCRIPT_NAME% Version: %SCRIPT_VERSION%%SVN_REVISION:~11,-1%
260 @echo Copyright(c) 2014, Intel Corporation. All rights reserved.
262 @call "%WORKSPACE%\BaseTools\Scripts\ShowEnvironment.bat"
266 :UnknownOptionOrArgument
267 @echo. ERROR : This argument is not valid: %1
272 @echo ERROR : Unable to determine if a compiler tool chain has been enabled in this
273 @echo command-prompt window. Rebuilding of the tools with this script is not
275 @echo Refer to the BaseTools\BuildNotes.txt for directions for building
276 @echo the BaseTools binaries.
281 @echo ERROR : Unable to rebuild the BaseTools binaries, python does not appear to be
282 @echo installed. If python is installed, please set the environment
283 @echo variable, PYTHONHOME to the Path to the python.exe, for example,
284 @echo if python.exe is located in the C:\Python27 directory, then:
285 @echo set PYTHONHOME=C:\Python27
290 @echo ERROR : Unable to rebuild the BaseTools binaries, python does not appear to be
292 @echo The python executable was not found in the PYTHONHOME: %PYTHONHOME%
293 @echo If python is installed, please set the environment variable, PYTHONHOME
294 @echo to the Path that contains python.exe, for example, if python.exe is
295 @echo located in the C:\Python27 directory, then:
296 @echo set PYTHONHOME=C:\Python27
301 @echo ERROR : Unable to locate cx_Freeze 4.2.3. The cxfreeze.bat file must be located
302 @echo in the %PYTHONHOME%\Scripts directoryin order to rebuild the BaseTools
308 @echo ERROR: Unable to locate the BaseTools directory containing the Source tree
312 @REM #########################################################################################
314 @REM Set up the Build System environment
315 @REM #########################################################################################
317 @if defined LOCATION @set "EDK_TOOLS_PATH=%LOCATION%"
318 @REM SET the EDK_TOOLS_PATH.
319 @if not exist "%EDK_TOOLS_PATH%" (
320 @mkdir %EDK_TOOLS_PATH%
322 @if not defined NASM_PREFIX (
324 @echo WARNING : NASM_PREFIX environment variable is not set
325 @if exist "C:\nasm\nasm.exe" @set "NASM_PREFIX=C:\nasm\"
326 @if exist "C:\nasm\nasm.exe" @echo Found nasm.exe, setting the environment variable to C:\nasm\
327 @if not exist "C:\nasm\nasm.exe" echo Attempting to build modules that require NASM will fail.
329 @REM Set up the path to include the EDK_TOOLS_PATH\Bin\Win32 directory; this test determines
330 @REM whether the path is in the workspace or a fully qualified path that may be outside of
332 @if exist "%WORKSPACE%\%EDK_TOOLS_PATH%" @set "EDK_TOOLS_PATH=%WORKSPACE%\%EDK_TOOLS_PATH%"
334 @if defined REBUILD_TOOLS goto SetConf
335 @if defined SVN_PULL goto SetConf
336 @if not exist "%EDK_TOOLS_PATH%\Bin\Win32\build.exe" (
337 @echo ERROR : %EDK_TOOLS_PATH%\Bin\Win32\build.exe does not exist
338 @echo Re-run this script using --reset, --pull or --rebuild
343 @echo Rebuilding of the tools is not required. Binaries of the latest,
344 @echo tested versions of the tools have been tested and included in the
345 @echo EDK II repository.
347 @echo If you really want to build the tools, use the --rebuild option.
349 @if not defined CYGWIN_HOME @echo "!!! WARNING !!! No CYGWIN_HOME set, gcc build may not be used !!!"
350 @if not defined CYGWIN_HOME @echo.
351 @REM Make sure the WORKSPACE\Conf directory contains the required text files that will be
352 @REM copied or replaced from the WORKSPACE\BaseTools\Conf directories' template
files.
354 @
if not exist "%EDK_TOOLS_PATH%\Conf" (
355 @
if exist "%WORKSPACE%\BaseTools\Conf" (
356 @
set "SRC_CONF=%WORKSPACE%\BaseTools\Conf"
359 @
set "SRC_CONF=%EDK_TOOLS_PATH%\Conf"
361 @
if not defined SRC_CONF
(
362 @
echo ERROR
: Unable to locate the BaseTools directory
tree
366 @REM The script will test to see
if the
files exist, and also
use the RESET_ENVIRONMENT flag
367 @REM to overwrite the WORKSPACE\Conf
*.txt
files.
368 @
call "%WORKSPACE%\BaseTools\Scripts\ShowEnvironment.bat"
370 @
echo Unable to
copy the template
files from
"%SRC_CONF%" to
"%WORKSPACE%\Conf"
375 @REM
Set up Visual Studio
if required to build the Nt32Pkg
/Nt32Pkg.dsc emulator
376 @
if "%NT32PKG%"=="TRUE" (
377 @
if not defined VSINSTALLDIR @
set "PATH=%ORIGINAL_PATH%"
378 @
if not defined NT32_X64 @
call "%WORKSPACE%\BaseTools\get_vsvars.bat"
379 @
if defined NT32_X64
call "%WORKSPACE%\BaseTools\Scripts\SetVisualStudio.bat"
382 @
if "%NT32PKG%"=="TRUE" (
383 @
if not defined VS_PATH
set "VS_PATH=%PATH%"
385 @
if defined VS_PATH @
set "PATH=%VS_PATH%"
386 @
if not defined VS_PATH @
set "PATH=%ORIGINAL_PATH%"
387 @
set "PATH=%EDK_TOOLS_PATH%\Bin\Win32;%PATH%"
389 @
if "%REBUILD_TOOLS%"=="TRUE" @
goto Rebuild
390 @
if "%SVN_PULL%"== "TRUE" (
391 if defined PYTHONHOME
(
392 @REM
Use the python script
if possible to test is the svn
command is available
, if it fails
, the user may be
393 @REM able to rebuild the Win32 binaries
394 @
call "%WORKSPACE%\BaseTools\Scripts\UpdateBuildVersions.py" --svn
-test
-v
396 @
echo ERROR
: The
command-line svn tool is
not available and the Win32 binaries
do not exist
397 @
echo Please re
-run this script again with the
--rebuild option to attempt to build
402 @
if exist %EDK_TOOLS_PATH%\Bin\Win32 @
rmdir /S
/Q
%EDK_TOOLS_PATH%\Bin\Win32
403 @
call svn co https
://svn.code.sf.
net/p
/edk2
-toolbinaries
/code
/trunk
/Win32
"%EDK_TOOLS_PATH%\Bin\Win32"
405 @
call svn co https
://svn.code.sf.
net/p
/edk2
-toolbinaries
/code
/trunk
/Win32
"%EDK_TOOLS_PATH%\Bin\Win32"
407 @
echo ERROR
: The
command-line svn tool is
not available and the Win32 binaries
do not exist
408 @
echo Python does
not appear to be available either. This script cannot be used to
409 @
echo build the Win32 binaries or to obtain them from this repository
:
410 @
echo https
://svn.code.sf.
net/p
/edk2
-toolbinaries
/code
/trunk
/Win32
417 @
if not "%REBUILD_TOOLS%"=="TRUE" @
goto ShowAndExit
419 @REM The following code is used to rebuild the Win32 BaseTools binaries
- check that required tools are available
421 @
if not defined BASE_TOOLS_PATH @
set "BASE_TOOLS_PATH=%WORKSPACE%\BaseTools"
422 @
if not exist "%BASE_TOOLS_PATH%\Source" @
goto NoBaseTools
424 @
if not defined VCINSTALLDIR @
goto NoVisualStudio
425 @
if not defined PYTHONHOME @
goto NoPython
426 @
if not exist "%PYTHONHOME%\python.exe" @
goto BadPython
427 @REM python.exe has been located
, now make sure it
's in the PATH
428 @call python --version > nul 2>&1
429 @if errorlevel 1 @set "PATH=%PYTHONHOME%\python.exe;%PATH%"
430 @if not defined PYTHON_FREEZER_PATH (
431 @if not exist "%PYTHONHOME%\Scripts\cxfreeze.bat" @goto NoCxFreeze
432 @set "PYTHON_FREEZER_PATH=%PYTHONHOME%\Scripts"
434 @call "%WORKSPACE%\BaseTools\Scripts\SetVisualStudio.bat"
435 @if errorlevel 1 @goto ExitFailure
438 @call "%WORKSPACE%\BaseTools\Scripts\ShowEnvironment.bat"
440 @REM #########################################################################################
442 @REM #########################################################################################
447 @set RESET_ENVIRONMENT=
451 @set BUILD_TOOLS_WITH=
458 @set LIST_VS_VERSIONS=
459 @set PYTHON_FREEZER_PATH=
467 @set RESET_ENVIRONMENT=
471 @set BUILD_TOOLS_WITH=
478 @set LIST_VS_VERSIONS=
479 @set PYTHON_FREEZER_PATH=