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
65 @
if not defined WORKSPACE
(
68 @
if not exist "%BASE_TOOLS_PATH%" (
69 @
if exist "%WORKSPACE%\BaseTools" (
70 set "BASE_TOOLS_PATH=%WORKSPACE%\BaseTools"
72 @
if defined PACKAGES_PATH
(
73 @
for %%i IN
(%PACKAGES_PATH%) DO (
74 @
if exist %%~fi\BaseTools
(
75 @
set BASE_TOOLS_PATH
=%%~fi\BaseTools
83 @
if not defined BASE_TOOLS_PATH
(
85 @
echo !!! ERROR
!!! The BaseTools Package was
not found
!!!
89 @
if not exist "%WORKSPACE%\Conf" @
mkdir "%WORKSPACE%\Conf"
91 @@
if not defined EDK_TOOLS_PATH @
set "EDK_TOOLS_PATH=%BASE_TOOLS_PATH%"
93 @REM Keep the existing EDK_TOOLS_PATH value
, the
--reset flag will
set it
94 @REM back to WORKSPACE\BaseTools while the
--location DIRECTORY flag will
95 @REM still take precedence
if the location option follows the reset option
96 @REM on the
command line.
97 @
if defined EDK_TOOLS_PATH @
set "LOCATION=%EDK_TOOLS_PATH%"
100 @
if "%1"=="" @
goto MainRoutine
101 @
if /I
"%1"=="-h" @
goto Usage
102 @
if /I
"%1"=="--help" @
goto Usage
103 @
if /I
"%1"=="/?" @
goto Usage
104 @
if /I
"%1"=="--version" @
goto Version
106 @REM These options will reset the system environment
108 @
setlocal EnableDelayedExpansion
109 @
set "WORKSPACE=%CD%"
110 @
set "EDK_TOOLS_PATH=%CD%\BaseTools"
111 @
set "LOCATION=!EDK_TOOLS_PATH!"
116 @
if /I
"%1"=="--reset" (
117 @
set "WORKSPACE=%CD%"
118 @
set "EDK_TOOLS_PATH=%WORKSPACE%\BaseTools"
119 @
set "LOCATION=%WORKSPACE%\BaseTools"
124 @REM This option is used to overwrite the Conf
/*.txt
files with the
125 @REM WORKSPACE\BaseTools\Conf\
*.template
files.
126 @
if /I
"%1"=="--reconfig" (
132 @REM This option can be used to
set the EDK_TOOLS_PATH containing the Win32 binaries to an
133 @REM alternate directory
134 @
if /I
"%1"=="--edk-tools-path" (
135 @
setlocal EnableDelayedExpansion
137 @
if "!ARGUMENT:~0,2!"=="--" (
139 @
echo ERROR
: The
--edk
-tools
-path flag requires an argument
145 @
set "LOCATION=%WORKSPACE%\%2"
151 @REM Force pulling updated
(or checkout
if they
do not exist) from SVN
for the BaseTools\Bin\Win32 directory
152 @REM or the directory pointed to by the
--location option
153 @
if /I
"%1"=="--pull" (
154 @
if "%REBUILD_TOOLS%"=="TRUE" (
156 @
echo ERROR
: The
--pull option may
not be used with the
--rebuild option
161 @
setlocal EnableDelayedExpansion
163 @
if not "!ARGUMENT:~0,2!"=="--" (
172 @REM This options forces rebuilding the tools
(provided the required tools are available
173 @
if /I
"%1"=="--rebuild" (
174 @
if "%SVN_PULL%"=="TRUE" (
176 @
echo ERROR
: The
--reset option may
not be used with the
--pull option
180 @
set REBUILD_TOOLS
=TRUE
181 @
setlocal EnableDelayedExpansion
183 @
if not "!ARGUMENT:~0,2!"=="--" (
192 @REM This option will try to
set the compiler environment
for building Nt32Pkg
/Nt32Pkg.dsc
193 @REM
If the compiler environment is already installed
, then no additional work is required.
194 @
if /I
"%1"=="--nt32" (
196 @
if not defined BUILD_TOOLS_WITH
(
197 @
set BUILD_TOOLS_WITH
=Latest
199 @REM This option will try to
set the environment
for building the Nt32Pkg
/Nt32Pkg
; on a
64-bit
209 @
if not "%1"=="" goto UnknownOptionOrArgument
213 @
echo Usage
: %SCRIPT_NAME% [Options
]
214 @
echo Copyright
(c
) 2014, Intel Corporation. All rights reserved.
216 @
echo The system environment variable
, WORKSPACE
, is always
set to the current
217 @
echo working directory.
220 @
echo --help
, -h
Print this help screen and
exit.
222 @
echo --version
Print this script
's version and exit.
224 @echo --reset, -r Reset the EDK_TOOLS_PATH and PATH system environment
225 @echo variables. The EDK_TOOLS_PATH default is
226 @echo WORKSPACE\BaseTools, however, it may be overridden by
227 @echo arguments given to the --edk-tools-path, --pull and/or
228 @echo --rebuild options.
229 @echo Once set, the EDK_TOOLS_PATH environment variable reset
230 @echo by opening up a new command prompt window or through one
231 @echo of the options provided by this tool
233 @echo --reconfig Overwrite the WORKSPACE/Conf/*.txt files with the
234 @echo template files from the BaseTools/Conf directory.
236 @echo --edk-tools-path DIRECTORY
237 @echo This option sets the EDK_TOOLS_PATH to the DIRECTORY
238 @echo value instead of the default (WORKSPACE\BaseTools).
240 @echo --nt32 [X64] If a compiler tool chain is not available in the
241 @echo environment, call a script to attempt to set one up.
242 @echo This flag is only required if building the
243 @echo Nt32Pkg/Nt32Pkg.dsc system emulator.
244 @echo If the X64 argument is set, and a compiler tool chain is
245 @echo not available, attempt to set up a tool chain that will
246 @echo create X64 binaries. Setting these two options have the
247 @echo potential side effect of changing tool chains used for a
252 @echo --pull [DIRECTORY] Get the EDK II BaseTools binaries from source control
253 @echo (must not be used with --rebuild).
254 @echo If the optional DIRECTORY argument is specified, the tool
255 @echo sets EDK_TOOLS_PATH to DIRECTORY.
256 @echo If the DIRECTORY argument is not specified, the tools are
257 @echo placed in the directory tree pointed to by the current
258 @echo EDK_TOOLS_PATH environment variable. If the binaries
259 @echo cannot be obtained from source control, the
260 @echo EDK_TOOLS_PATH will be set to the default,
261 @echo WORKSPACE\BaseTools directory.
263 @echo --rebuild [DIRECTORY]
264 @echo Force Rebuilding the EDK II BaseTools from source
265 @echo (must not be used with --pull).
266 @echo NOTE: The build will use whatever compiler tool set
267 @echo is available in the environment prior to
268 @echo running edksetup.bat.
269 @echo If the optional DIRECTORY argument is specified, the tool
270 @echo sets EDK_TOOLS_PATH to DIRECTORY. Tools binaries will be
271 @echo placed in the appropriate subdirectory in the
272 @echo EDK_TOOLS_PATH directory. If the build fails, the
273 @echo EDK_TOOLS_PATH will be set to the default,
274 @echo WORKSPACE\BaseTools directory.
278 @echo %SCRIPT_NAME% Version: %SCRIPT_VERSION%%SVN_REVISION:~11,-1%
279 @echo Copyright(c) 2014, Intel Corporation. All rights reserved.
281 @call "%BASE_TOOLS_PATH%\Scripts\ShowEnvironment.bat"
285 :UnknownOptionOrArgument
286 @echo. ERROR : This argument is not valid: %1
291 @echo ERROR : Unable to determine if a compiler tool chain has been enabled in this
292 @echo command-prompt window. Rebuilding of the tools with this script is not
294 @echo Refer to the BaseTools\BuildNotes.txt for directions for building
295 @echo the BaseTools binaries.
300 @echo ERROR : Unable to rebuild the BaseTools binaries, python does not appear to be
301 @echo installed. If python is installed, please set the environment
302 @echo variable, PYTHONHOME to the Path to the python.exe, for example,
303 @echo if python.exe is located in the C:\Python27 directory, then:
304 @echo set PYTHONHOME=C:\Python27
309 @echo ERROR : Unable to rebuild the BaseTools binaries, python does not appear to be
311 @echo The python executable was not found in the PYTHONHOME: %PYTHONHOME%
312 @echo If python is installed, please set the environment variable, PYTHONHOME
313 @echo to the Path that contains python.exe, for example, if python.exe is
314 @echo located in the C:\Python27 directory, then:
315 @echo set PYTHONHOME=C:\Python27
320 @echo ERROR : Unable to locate cx_Freeze 4.2.3. The cxfreeze.bat file must be located
321 @echo in the %PYTHONHOME%\Scripts directoryin order to rebuild the BaseTools
327 @echo ERROR: Unable to locate the BaseTools directory containing the Source tree
331 @REM #########################################################################################
333 @REM Set up the Build System environment
334 @REM #########################################################################################
336 @if defined LOCATION @set "EDK_TOOLS_PATH=%LOCATION%"
337 @REM SET the EDK_TOOLS_PATH.
338 @if not exist "%EDK_TOOLS_PATH%" (
339 @mkdir %EDK_TOOLS_PATH%
341 @if not defined NASM_PREFIX (
343 @echo WARNING : NASM_PREFIX environment variable is not set
344 @if exist "C:\nasm\nasm.exe" @set "NASM_PREFIX=C:\nasm\"
345 @if exist "C:\nasm\nasm.exe" @echo Found nasm.exe, setting the environment variable to C:\nasm\
346 @if not exist "C:\nasm\nasm.exe" echo Attempting to build modules that require NASM will fail.
348 @REM Set up the path to include the EDK_TOOLS_PATH\Bin\Win32 directory; this test determines
349 @REM whether the path is in the workspace or a fully qualified path that may be outside of
351 @if exist "%WORKSPACE%\%EDK_TOOLS_PATH%" @set "EDK_TOOLS_PATH=%WORKSPACE%\%EDK_TOOLS_PATH%"
353 @if defined REBUILD_TOOLS goto SetConf
354 @if defined SVN_PULL goto SetConf
355 @if not exist "%EDK_TOOLS_PATH%\Bin\Win32\build.exe" (
356 @echo ERROR : %EDK_TOOLS_PATH%\Bin\Win32\build.exe does not exist
357 @echo Re-run this script using --reset, --pull or --rebuild
362 @echo Rebuilding of the tools is not required. Binaries of the latest,
363 @echo tested versions of the tools have been tested and included in the
364 @echo EDK II repository.
366 @echo If you really want to build the tools, use the --rebuild option.
368 @if not defined CYGWIN_HOME @echo "!!! WARNING !!! No CYGWIN_HOME set, gcc build may not be used !!!"
369 @if not defined CYGWIN_HOME @echo.
370 @REM Make sure the WORKSPACE\Conf directory contains the required text files that will be
371 @REM copied or replaced from the WORKSPACE\BaseTools\Conf directories' template
files.
373 @
if not exist "%EDK_TOOLS_PATH%\Conf" (
374 @
if exist "%BASE_TOOLS_PATH%\Conf" (
375 @
set "SRC_CONF=%BASE_TOOLS_PATH%\Conf"
378 @
set "SRC_CONF=%EDK_TOOLS_PATH%\Conf"
380 @
if not defined SRC_CONF
(
381 @
echo ERROR
: Unable to locate the BaseTools directory
tree
385 @REM The script will test to see
if the
files exist, and also
use the RESET_ENVIRONMENT flag
386 @REM to overwrite the WORKSPACE\Conf
*.txt
files.
387 @
call "%BASE_TOOLS_PATH%\Scripts\ShowEnvironment.bat"
389 @
echo Unable to
copy the template
files from
"%SRC_CONF%" to
"%WORKSPACE%\Conf"
394 @REM
Set up Visual Studio
if required to build the Nt32Pkg
/Nt32Pkg.dsc emulator
395 @
if "%NT32PKG%"=="TRUE" (
396 @
if not defined VSINSTALLDIR @
set "PATH=%ORIGINAL_PATH%"
397 @
if not defined NT32_X64 @
call "%BASE_TOOLS_PATH%\get_vsvars.bat"
398 @
if defined NT32_X64
call "%BASE_TOOLS_PATH%\Scripts\SetVisualStudio.bat"
400 @
if "%NT32PKG%"=="TRUE" (
401 @
if not defined VS_PATH
set "VS_PATH=%PATH%"
403 @
if defined VS_PATH @
set "PATH=%VS_PATH%"
404 @
if not defined VS_PATH @
set "PATH=%ORIGINAL_PATH%"
405 @
if not defined EDK_TOOLS_BIN
(
406 @
if exist %EDK_TOOLS_PATH%\Bin\Win32
(
407 @
set EDK_TOOLS_BIN
=%EDK_TOOLS_PATH%\Bin\Win32
410 @
echo !!! ERROR
!!! Cannot
find BaseTools Bin Win32
!!!
411 @
echo Please check the directory
%EDK_TOOLS_PATH%\Bin\Win32
412 @
echo Or configure EDK_TOOLS_BIN env to point Win32 directory.
417 @
set "PATH=%EDK_TOOLS_BIN%;%PATH%"
419 @
if "%REBUILD_TOOLS%"=="TRUE" @
goto Rebuild
420 @
if "%SVN_PULL%"== "TRUE" (
421 if defined PYTHONHOME
(
422 @REM
Use the python script
if possible to test is the svn
command is available
, if it fails
, the user may be
423 @REM able to rebuild the Win32 binaries
424 @
call "%BASE_TOOLS_PATH%\Scripts\UpdateBuildVersions.py" --svn
-test
-v
426 @
echo ERROR
: The
command-line svn tool is
not available and the Win32 binaries
do not exist
427 @
echo Please re
-run this script again with the
--rebuild option to attempt to build
432 @
if exist %EDK_TOOLS_PATH%\Bin\Win32 @
rmdir /S
/Q
%EDK_TOOLS_PATH%\Bin\Win32
433 @
call svn co https
://svn.code.sf.
net/p
/edk2
-toolbinaries
/code
/trunk
/Win32
"%EDK_TOOLS_PATH%\Bin\Win32"
435 @
call svn co https
://svn.code.sf.
net/p
/edk2
-toolbinaries
/code
/trunk
/Win32
"%EDK_TOOLS_PATH%\Bin\Win32"
437 @
echo ERROR
: The
command-line svn tool is
not available and the Win32 binaries
do not exist
438 @
echo Python does
not appear to be available either. This script cannot be used to
439 @
echo build the Win32 binaries or to obtain them from this repository
:
440 @
echo https
://svn.code.sf.
net/p
/edk2
-toolbinaries
/code
/trunk
/Win32
447 @
if not "%REBUILD_TOOLS%"=="TRUE" @
goto ShowAndExit
449 @REM The following code is used to rebuild the Win32 BaseTools binaries
- check that required tools are available
451 @
if not exist "%BASE_TOOLS_PATH%\Source" @
goto NoBaseTools
453 @
if not defined VCINSTALLDIR @
goto NoVisualStudio
454 @
if not defined PYTHONHOME @
goto NoPython
455 @
if not exist "%PYTHONHOME%\python.exe" @
goto BadPython
456 @REM python.exe has been located
, now make sure it
's in the PATH
457 @call python --version > nul 2>&1
458 @if errorlevel 1 @set "PATH=%PYTHONHOME%\python.exe;%PATH%"
459 @if not defined PYTHON_FREEZER_PATH (
460 @if not exist "%PYTHONHOME%\Scripts\cxfreeze.bat" @goto NoCxFreeze
461 @set "PYTHON_FREEZER_PATH=%PYTHONHOME%\Scripts"
463 @call "%BASE_TOOLS_PATH%\Scripts\SetVisualStudio.bat"
464 @if errorlevel 1 @goto ExitFailure
467 @call "%BASE_TOOLS_PATH%\Scripts\ShowEnvironment.bat"
469 @REM #########################################################################################
471 @REM #########################################################################################
476 @set RESET_ENVIRONMENT=
479 @set BUILD_TOOLS_WITH=
486 @set LIST_VS_VERSIONS=
487 @set PYTHON_FREEZER_PATH=
495 @set RESET_ENVIRONMENT=
498 @set BUILD_TOOLS_WITH=
505 @set LIST_VS_VERSIONS=
506 @set PYTHON_FREEZER_PATH=