Intel(R) Platform Innovation Framework for EFI
EFI Development Kit II Prime (EDK II Prime)
Root Package 1.00
2007-06-25

Intel is a trademark or registered trademark of Intel Corporation or its
subsidiaries in the United States and other countries.
* Other names and brands may be claimed as the property of others.
Copyright (c) 2007, Intel Corporation

EDK II Prime packages are in the development phase. They consist of:

  BuildNotes2.txt         - The build notes for this package
  MdePkg                  - Industry-standard headers and libraries
  BaseTools               - Build -specific tools that are designed to help the
                            developer create and modify drivers and libraries
  IntelFrameworkPkg       - Tiano/Framework Includes and Libraries
  MdeModulePkg            - UEFI 2.1/PI 1.0 compliant modules
  IntelFrameworkModulePKg - Tiano/Framework Includes and Libraries
  Nt32Pkg                 - UEFI 2.1/PI 1.0 emulation environment for Windows
  FatBinPkg               - Binaries built from the FatPkg 
  EdkShellBinPkg          - Binaries of full shell, minimum shell and commonds(to be added)

Note:
  EdkShellBinPkg is supported to support both EDK II build and EDKII Prime build by having several module description files.

-------------------------------------------------------------------------------
Quick Start
-----------

In a command window, change to the top-level directory of the EDK II source.

First, set up your workspace. If you have had a setup, please make sure that
you don't have newer *.template in WORKSPACE\BaseTools\Conf. Otherwise remove
*.txt files in WORKSPACE\Conf in advance.
    c:\MyWork\edk2\> edksetup newbuild

Second, go to the module directory (For example, MdeModulePkg\Application\HelloWorld),
and then begin to build
    c:\MyWork\edk2\> cd MdeModulePkg\Application\HelloWorld
    c:\MyWork\edk2\> build

If you want to build the modules in other packages
(For example, MdePkg\Library\BaseLib\BaseLib.inf), please edit open the <WORKSPACE>\Conf\Target.txt first,

change the following line
    ACTIVE_PLATFORM       = MdeModulePkg/MdeModulePkg.dsc
to
    ACTIVE_PLATFORM       = MdePkg/MdePkg.dsc

and then go to MdePkg\Library\BaseLib directory and build
    c:\MyWork\edk2\> cd MdePkg\Library\BaseLib
    c:\MyWork\edk2\> build

If you want build a platform, ACTIVE_PLATFORM must be set to your desired platform dsc file,
go to directory which must be not a module's directory, and run "build" command.

Instead of changing Target.txt, you can specify platform, module and/or architecture on command line.
For example, if you want to build NT32 platform, you can just type 

		c:\MyWork\edk2\> build -p Nt32Pkg\Nt32Pkg.dsc -a IA32

and if you want to build HelloWorld module, you can just type

		c:\MyWork\edk2\> build -p Nt32Pkg\Nt32Pkg.dsc -a IA32 -m MdeModulePkg\Application\HelloWorld\HelloWorld.inf

Other helpful command line options of build tool include "-v" and "-d". "-v" option is used to turn on
the verbose build, which provide more information during the build. "-d <debug level 0-9>" option is used to
turn on the debug information which is helpful debugging build tools.

For more information on build options, please try "build -h" on command line. Note that "/?" is not working.


-------------------------------------------------------------------------------
Supported build targets
-----------------------

all       - Build whole platform or module. It can be ignored.
genc      - Generate AutoGen.c, AutoGen.h and <ModuleName>.depex files only.
genmake   - Generate makefiles in addition to files generated by "genc" target.
clean     - Clean intermediate files
cleanall  - Clean all generated files and directories during build, except Makefile
cleanlib  - Clean all generated files and directories during library build
run       - Launch NT32 shell (only valid for NT32 platform)

-------------------------------------------------------------------------------
Tools in Python
---------------

* Run buld tool written in Python from source
  The build tool written in Python can be executed from its source directly as long as you
have the Python interpreter (version 2.5) installed. The source of Python code is locating at

		https://buildtools.tianocore.org/svn/buildtools/trunk/BaseTools/Source/Python

	where:

		build/build.py	    - The entry tool of build tools
		AutoGen/AutoGen.py  - Generate AutoGen.c/.h and makefile only

	"build.py" steps:
		1. Run "edksetup.bat newbuild"
        2. set PYTHONPATH to the local directory of above source (BaseTools/Source/Python)
		3. Set ACTIVE_PLATFORM in WORKSPACE\Conf
		4. Go to platform or module directory
		5. Run "<python_interpreter.exe> <python_source_dir>/build/build.py" or "<python_source_dir>/build/build.py"
		   directly.

	"AutoGen.py" steps:
		1. Run "edksetup.bat newbuild"
        2. set PYTHONPATH to the local directory of above source (BaseTools/Source/Python)
		3. Set ACTIVE_PLATFORM in WORKSPACE\Conf
		4. Run "<python_interpreter.exe> <python_source_dir>/AutoGen/AutoGen.py" or "<python_source_dir>/AutoGen/AutoGen.py"

* Convert Python source to exe file
  The tools written in Python can be coverted into executable program which can be executed
without Python interpreter. One of the convertion tools is called cx_Freeze at 

		http://sourceforge.net/projects/cx-freeze/

	Suppose you have installed cx_Freeze at c:\cx_Freeze-3.0.3. Use following command line to convert MyBuild.py

    set PYTHONPATH=<buildtools>\BaseTools\Source\Python
  	c:\cx_Freeze-3.0.3\FreezePython.exe --include-modules=encodings.cp437,encodings.gbk,encodings.utf_16,encodings.utf_8 --install-dir=.\mybuild MyBuild.py

	The generated .exe files are put in "mybuild" subdirectory.

