1. Rename ReleaseNotes.txt to BuildNotes.txt.
authorhche10x <hche10x@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 8 Nov 2006 06:12:54 +0000 (06:12 +0000)
committerhche10x <hche10x@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 8 Nov 2006 06:12:54 +0000 (06:12 +0000)
2. Update BuildNotes.txt for some typo issue.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1915 6f19259b-4bc3-4df7-8a09-765794883524

BuildNotes.txt [new file with mode: 0644]
ReleaseNotes.txt [deleted file]

diff --git a/BuildNotes.txt b/BuildNotes.txt
new file mode 100644 (file)
index 0000000..00c2e42
--- /dev/null
@@ -0,0 +1,669 @@
+Intel(R) Platform Innovation Framework for EFI\r
+EFI Development Kit II (EDK II) \r
+Root Package 1.00\r
+2006-11-08\r
+\r
+Intel is a trademark or registered trademark of Intel Corporation or its \r
+subsidiaries in the United States and other countries.\r
+* Other names and brands may be claimed as the property of others.\r
+Copyright (c) 2006, Intel Corporation\r
+\r
+This document provides updates to documentation, along with a description on \r
+how to install and build the EDK II.\r
+\r
+Package Contents\r
+----------------\r
+  ReleaseNote.txt- These release notes for the package.\r
+  MdePkg         - Industry-standard headers and libraries\r
+  Tools          - Build -specific tools that are designed to help the \r
+                   developer create and modify drivers and libraries\r
+  EdkModulePkg   - Reference drivers\r
+  EdkFatBinPkg   - Binary DXE drivers for the Fat 32 file system\r
+  EdkShellBinPkg - Binary Shell applications and commands\r
+  EdkNt32Pkg     - NT32 Emulation platform reference\r
+\r
+Note: MDE and MDK that appear in other documentation refer to the MdePkg and\r
+Tools packages, respectively.  While, these two packages are the minimum \r
+requirement for developing EDK II Packages we recommend that you download all \r
+of the top-level files listed above.\r
+\r
+The following package is available as a separate project, under a separate \r
+license, on the TianoCore.org website: https://fat-driver2.tianocore.org\r
+\r
+  EdkFatPkg      - A package containing source DXE drivers for the Fat 32 file\r
+                   system\r
+\r
+Documents have the following filenames (to download these documents, see \93Notes \r
+on Documentation?later in these Release Notes):\r
+  EDK II Module Development Environment Library Specification, v0.58 \r
+      (MDE_Library_Spec_0_58.rtf)\r
+  EDK II Build and Packaging Architecture Specification, v0.53\r
+      (Build_Packaging_Spec_0_53.rtf)\r
+  EDK II Platform Configuration Database Infrastructure Description, v0.54\r
+      (PCD_Infrastructure_0_54.rtf)\r
+  EDK II Module Surface Area Specification, v0.51\r
+      (Module_Surface_Area_0_50.rtf)\r
+  EDK II Module Development Environment Package Specification, v0.51\r
+      (MDE_Package_Spec_0_51.rtf)\r
+  EDK II C Coding Standards Specification v0.51\r
+      (C_Coding_Standards_Specification_ 0_51.rtf)\r
+  EDK II Subversion Setup Guide\r
+      (edk2-subversion-setup.rtf)\r
+\r
+Pre-Requisites\r
+--------------\r
+The following list of tools must be installed on the development workstation\r
+prior to using the EDK II.\r
+\r
+Compiler Tool Chain\r
+      Microsoft* Visual Studio .NET 2003*  (http://www.microsoft.com)\r
+    or\r
+      A special GCC version 4.x or later (http://gcc.gnu.org). See below.\r
+\r
+Assembler Tool Chain\r
+      Microsoft Macro Assembler, version 6.15 or later\r
+    or\r
+      GNU binutils 2.16.1 or later\r
+      (Http://ftp.gnu.org/gnu/binutils)\r
+\r
+Java Development Kit ( Java 5.0 or later)\r
+      Sun* jdk-1.5.0_06 or later (http://java.sun.com)\r
+    or\r
+      Bea Systems* jrockit-25.2.0-jdk1.5.0_03 or later (http://www.bea.com)\r
+\r
+Java Tools\r
+    Apache-ANT, version 1.6.5 or later (http://ant.apache.org)\r
+    Ant-contrib, version 1.0b2 or later\r
+      (http://prdownloads.sourceforge.net/ant-contrib/ant-contrib-1.0b2-bin.zip?download)\r
+    Saxon8, version 8.1.1\r
+      (http://prdownloads.sourceforge.net/saxon/saxonb8-1-1.zip?download)\r
+    XMLBeans, version 2.1.0 (http://xmlbeans.apache.org)\r
+      DO NOT download the latest XMLBeans, version 2.2.0. It is not compatible \r
+      with Saxon8, version 8.1.1.\r
+\r
+Other Tools\r
+    TortoiseSVN version 1.3.3. (http://tortoisesvn.tigris.org/)\r
+\r
+Optional Tools\r
+--------------\r
+Compiler Tool Chains:\r
+    Intel(R) C++ Compiler for Windows*, ver. 9.0 or later (http://www.intel.com)\r
+    Intel(R) C Compiler for EFI Byte Code, ver. 1.2 or later \r
+      (http://www.intel.com/cd/software/products/asmo-na/eng/compilers/efibc/index.htm)\r
+    Microsoft Driver Development Kit, version 3790.1830 or later\r
+      (http://www.microsoft.com/whdc/devtools/ddk/orderddkcd.mspx)\r
+    Microsoft ACPI Source Language Assembler, Version 1.0.13NT or later\r
+    Intel ACPI Component Architecture, version 20060113\r
+\r
+-----------------------------------------------\r
+Notes on Required Tools (Source Control System)\r
+-----------------------------------------------\r
+The EDK II is being managed by the Subversion Source Control on Tianocore.org.\r
+Subversion provides speed, security, and additional features. The\r
+recommended client is TortoiseSVN version 1.3.3. \r
+ (Available at http://tortoisesvn.tigris.org/)\r
+\r
+The checkout procedures on the Tianocore.org Web site include\r
+instructions for the use of Subversion Source Control.\r
+\r
+The URL of the EDK II repository is:\r
+  https://edk2.tianocore.org/svn/edk2/trunk/edk2\r
+\r
+\r
+--------------------------------------------------------------------\r
+Notes On Required Tools (With examples for Windows, OS X, and Linux*) \r
+--------------------------------------------------------------------\r
+Software Installation Order:\r
+  After installing the compiler tools and your Subversion client, install the \r
+  following required tools in this order: \r
+    1. Java JDK\r
+    2. Apache-Ant\r
+    3. ant-contrib\r
+    4. xmlbeans\r
+    5. saxon8\r
+\r
+Java Development Kit:\r
\r
+   The Java Environment Variable must be set before attempting to build.\r
+       For Sun JDK (see note below?:\r
+              set JAVA_HOME=c:\Java\jdk1.5.0_06  (Windows example)\r
+              export JAVA_HOME=/Library/Java/Home/ (OS X example)\r
+              export JAVA_HOME=/usr/lib/j2sdk1.5-sun/ (Linux example)\r
+       For Bea Systems:\r
+              set JAVA_HOME=c:\Java\jrockit-R26.0.0-jdk1.5.0_04\r
\r
+  ?When using the Sun JDK5.0:\r
+    During installation, you should specify the install directory as C:\Java\r
+    instead of C:\Program Files\(or some other drive letter.)  While installing\r
+    to this non-standard location is not required, in practice, it seems to work \r
+    more reliably. \r
+    For the JDK, the install path is C:\Java\jdk1.5.0_06\r
+    For the JRE, the install path is C:\Java\jre1.5.0_06\r
+    Alternatively, you can specify C:\sunjavajdk and C:\sunjavajre.\r
+\r
+    NOTE: You cannot combine the location for the JDK and the JRE, because the \r
+    JRE install removes most of the binaries and libraries installed by the JDK\r
+    install.\r
+\r
+Java Tools:\r
+    The Apache-ANT requires the ANT_HOME environment variable to be set before\r
+    attempting to build:\r
+         set ANT_HOME=c:\<full path to where ant was installed>\r
+          export ANT_HOME=~/ExternalTools/apache-ant (OS X and Linux example)\r
+\r
+    The ant-contrib.jar file should be installed in the %ANT_HOME%\lib \r
+    directory.\r
+\r
+    XMLBeans, requires the XMLBEANS_HOME environment variable to be set\r
+    before attempting to build:\r
+         set XMLBEANS_HOME=C:\<full path to where xmlbeans was installed>\r
+          export XMLBEANS_HOME=~/ExternalTools/xmlbeans (OS X and Linux example)\r
+\r
+    Copy the saxon8.jar file to the %XMLBEANS_HOME%\lib directory.\r
+\r
+   The Ant and XMLBean tools must be in the path.\r
+     MS system example:\r
+        set PATH=%PATH%;%ANT_HOME%\bin;%XMLBEANS_HOME%\bin\r
+     Linux/OS X bash shell example:\r
+        export PATH=$PATH:${ANT_HOME}/bin:${XMLBEANS_HOME}/bin\r
+\r
+--------------------\r
+A Word on Apache-ANT\r
+--------------------\r
+The Apache-ANT program is a build tool that uses XML-based project files.\r
+Similar to Makefiles, these project files may contain multiple targets.  Most\r
+build.xml files in EDK II are auto-generated; any edits performed on the\r
+build.xml files will be overwritten by the next build.\r
+\r
+Pre-defined targets in the build.xml file include:\r
+    all      - This target builds binaries for defined architectures.\r
+    clean    - This target removes object files generated by commands.\r
+    cleanall - This target removes all generated files and directories.\r
+\r
+----------------------------\r
+A Word on the GCC Tool Chain\r
+----------------------------\r
+\r
+EDK II will not compile with a standard Linux gcc tool chain. While Linux\r
+distributions are usually based on ELF, EDK II requires a version of gcc that\r
+is configured to produce PE-COFF images. You will find a script in <Root of\r
+EDK2 tree>/Tools/gcc/tianoCross-gcc-4.1 that will download, configure, compile,\r
+and install a gcc 4.1 cross-compile tool chain for EDK II development. This\r
+custom tool chain supports the IA-32 architecture. It can be built and run on\r
+Cygwin, Linux, and many other POSIX-compliant host operating environments. To\r
+compile the custom gcc tool chain, you need the following tools on your host\r
+computer: bash, gcc, gmake, curl (or wget).\r
+\r
+Only the MdePkg and EdkModulePkg are currently supported by gcc builds. Other\r
+builds, such as the EdkNt32Pkg, will not compile with gcc. By default, the edk2\r
+will try to build the NT32.fpd, which is not supported by gcc. So, you need to\r
+change the Tools/Conf/target.txt.\r
+\r
+The cross-compile build script has been tested on Cygwin, OS X and Linux. You\r
+should expect to hack on these scripts to make them work on your system. You\r
+may need to install additional tools on your system to make the scripts work.\r
+\r
+You will need\r
+\r
+  A recent version (3.0 or later should be fine) of gcc that is able to produce\r
+    executables for the machine that you want to run this compiler on (the host\r
+    machine).\r
+  wget or curl (which enables the download of the gcc compiler source code)\r
+  tar\r
+  bzip\r
+  gzip\r
+  bash\r
+  and possibly others\r
+\r
+CYGWIN Notes\r
+\r
+You should setup cygwin to use binmode on all mounts. When you initially\r
+install cygwin it gives you the choice of Unix file mode (recommended) or DOS\r
+file mode. Unix mode will cause all the cygwin directories to be mounted in\r
+binmode, while DOS will mount the dirs in textmode. Here is an example of a\r
+cygwin install where the dirs are (properly) mounted in binmode.\r
+To view mount information, type: \r
+    mount\r
+\r
+C:\cygwin\bin on /usr/bin type user (binmode)\r
+C:\cygwin\lib on /usr/lib type user (binmode)\r
+c:\workspace on /workspace type system (binmode)\r
+C:\cygwin on / type user (binmode)\r
+\r
+If you use textmode, it is likely that the build will fail in a way that is\r
+hard to debug.  Textmode is required to retain or add the DOS ^M characters\r
+in DOS batch files during file editing sessions.\r
+\r
+You can switch from textmode to binmode for compilation by executing the \r
+following:\r
+    mount -b --change-cygdrive-prefix cygdrive\r
+\r
+Cygwin is pretty slow, so it is not recommended for large builds.\r
+\r
+\r
+\r
+\r
+\r
+The platform to be built is identified by the Tools/Conf/target.txt file:\r
+\r
+#\r
+#  PROPERTY              Type       Use         Description\r
+#  ----------------      --------   --------    -----------------------------------------------------------\r
+#  ACTIVE_PLATFORM       Filename   Recommended Specify the WORKSPACE relative Path and Filename \r
+#                                               of the platform FPD file that will be used for the build\r
+#                                               This line is required if and only if the current working\r
+#                                               directory does not contain one or more FPD files.\r
+\r
+ACTIVE_PLATFORM       =\r
\r
+You can leave it black, as above, or set it to any .fpd file in the workspace.\r
+If you leave it blank, then you just cd to the dir that contains the .fpd that\r
+you would like to build (MdePkg/ or EdkModulePkg/) and then type build.\r
+\r
+----------------------------\r
+A Word on compiling on Linux\r
+----------------------------\r
+\r
+In order to compile on Linux, you will need to have the e2fsprogs-devel package\r
+installed.  Check your distribution for the rpm, deb or other package format.\r
+This package contains the uuid library and header that are used by some of the\r
+host tools.\r
+\r
+If you are running on x86_64 Linux, then you should install a 64 bit version of\r
+the Java JDK. The version that was used was jdk-1_5_0_07-linux-amd64-rpm.bin.\r
+It may be downloaded from sun.com.\r
+\r
+-----------------------------------------\r
+A Word on compiling under Cygwin with gcc\r
+-----------------------------------------\r
+\r
+Cygwin is a POSIX style operating environment for Windows. It is possible to\r
+compile the EDK 2 using gcc and cygwin. Compiling under cygwin is slow, because \r
+the underlying file accesses are slow in cygwin. For this reason, we do not \r
+encourage the use of cygwin. A true unix system will be a superior choice for \r
+those wishing to compile with gcc.\r
+\r
+Make sure that you select the e2fsprogs development package when you install\r
+cygwin. It is necessary for the GenFvImage tool.\r
+\r
+----------------------------------------\r
+A Word on gcc for Processor Architectures\r
+----------------------------------------\r
+\r
+Currently gcc support is limited to IA-32 builds, generating IA-32 PE32 images. \r
+\r
+The X64 bit (Intel 64, etc.) support under the gcc compiler does not support the EFIAPI \r
+calling convention (as defined in the UEFI 2.0 specification Chapter 2), so it is not \r
+possible to build a working EFI image for an X64 environment.  Since the x64 gcc does \r
+not support the EFIAPI calling convention the x64 tools do not support generating a \r
+PE32+ image.  The EFIAPI calling convention is very similar to the Microsoft x64 \r
+calling convention.\r
+\r
+On Itanium?Processors the gcc compiler does not support generating a PE32+ image.\r
+\r
+-----------------------\r
+Notes on Documentation\r
+-----------------------\r
+The documents are being managed by the Subversion Source Control on\r
+Tianocore.org.  The document repository is "docs" and must be checked out\r
+separately from the EDK II source tree. Refer to the checkout procedures on\r
+the Tianocore.org Web site for EDK II.\r
+\r
+The URL of the document repository is:\r
+  https://edk2.tianocore.org/svn/edk2/trunk/docs\r
+\r
\r
+-------------------------------------------------------------------------------\r
+Quick Start\r
+-----------\r
+(assumes Microsoft Tools and OS environment, for GCC Tools or Linux, see \r
+"Detailed Starting Instructions" below)\r
+\r
+Follow the instructions at https://edk2.tianocore.org/servlets/ProjectSource to\r
+check out the entire EDK II source tree.\r
+\r
+In a command window, change to the top-level directory of the EDK II source.\r
+\r
+To test your tool chain setup and to build the supplied tools, execute:\r
+    c:\MyWork\edk2\> edksetup ForceRebuild\r
+\r
+(The edksetup script is referred to as the setup command throughout the \r
+rest of this document.)\r
+      NOTE: You should run the setup command at the start of every session.\r
+            This configures the environment to include the TianoTools and the\r
+            Java applications and libraries.\r
+\r
+You will need to set the WORKSPACE environment variable, or run the edksetup\r
+script (without any arguments), any time you want to build.\r
+\r
+  Set the WORKSPACE environment variable, e.g.:\r
+\r
+    c:\> set WORKSPACE=C:\MyWork\edk2\r
+\r
+You may need to edit the text files Tools/Conf/target.txt and\r
+Tools/Conf/tools_def.txt (created by edksetup) using your favorite \r
+text editor to ensure that the paths to the tools you want to use \r
+to build EDK II binaries are correct.  These files contain the default \r
+paths (as per the default installation of the tools), so a customized \r
+install may require this manual process.\r
+\r
+Once this is completed, you are ready to test the build, by executing:\r
+    c:\MyWork\edk2\> build\r
+\r
+This command builds the active platform specified in text file target.txt. If \r
+the active platform is not specified target.txt, you must execute the build \r
+command from the sub-directory that contains FPD files. For more information \r
+about the active platform policy, see the \93EDK II Build and Packaging \r
+Architecture Specification.?
+\r
+-------------------------------------------------------------------------------\r
+Detailed Starting Instructions\r
+------------------------------\r
+\r
+Follow the instructions at https://edk2.tianocore.org/servlets/ProjectSource to\r
+check out the entire EDK II source tree.\r
+\r
+In a command window, change to the top-level directory of the EDK II source.\r
+\r
+If the active compiler tool chain is GCC, you must set the\r
+environment variable, TOOL_CHAIN to "gcc" before running the\r
+edksetup script.  Example: export TOOL_CHAIN=gcc\r
+\r
+To test your tool chain setup and to build the supplied tools, execute:\r
+    c:\MyWork\edk2\> edksetup ForceRebuild\r
+\r
+On Linux systems, you must source the edksetup.sh file to load the correct\r
+settings into your shell.\r
+\r
+    . edksetup.sh # Note the dot.\r
+\r
+If you have recently updated your code from subversion, the tools will need to\r
+be rebuilt if there were any code changes made to them. You can request that\r
+the tools get rebuilt by typing:\r
+\r
+    . edksetup.sh Rebuild # Unix-like systems\r
+    edksetup.bat Rebuild  # Windows\r
+\r
+The edksetup script is referred to as the setup command throughout the \r
+rest of this document.\r
+      NOTE: You should run the setup command (edksetup)at the start of every \r
+            session.  This configures the environment to include the \r
+            TianoTools and the Java applications and libraries.\r
+\r
+Any changes to the tool source code or XML Schema documents require that\r
+you execute the following:\r
+   c:\MyWork\edk2\> edksetup ForceRebuild\r
+\r
+You must set the WORKSPACE environment variable, or run the edksetup\r
+script (without any arguments), any time you want to build.\r
+\r
+  Set the WORKSPACE environment variable, e.g.:\r
+\r
+    c:\> set WORKSPACE=C:\MyWork\edk2\r
+\r
+You may need to edit the text files Tools/Conf/target.txt and\r
+Tools/Conf/tools_def.txt (created by edksetup) using your favorite \r
+text editor to ensure that the paths to the tools you want to use \r
+to build EDK II binaries are correct.  These files contain the default \r
+paths (as per the default installation of the tools), so a customized \r
+tool installation may require this manual process.\r
+\r
+Once this is completed, you are ready to test the build, by executing:\r
+    c:\MyWork\edk2\> build\r
+\r
+This command builds the active platform specified in text file target.txt. If \r
+the active platform is not specified, go to the sub-directory that contains FPD \r
+files and execute the build command. For more information about the active \r
+platform policy, see the \93EDK II Build and Packaging Architecture \r
+Specification.?
+\r
+--------------------------\r
+Individual Platform Builds\r
+--------------------------\r
+After running the setup command, you can build individual platforms.\r
+In the command window:\r
+  Set the active platform in target.txt, and execute this command:\r
+    c:\<directory>\> build\r
+or\r
+  cd to the platform (FPD file) that you want to build and execute this command:\r
+    c:\MyWork\edk2\EdkNt32Pkg\> build\r
+\r
+  Note that the active platform specified in target.txt overrides the platform \r
+  specified by any FPD file in the current directory. For more   information \r
+  about active platform policy, see the \93EDK II Build and Packaging Architecture\r
+  Specification.?\r
+\r
+To run the Nt32 emulation platform under Microsoft Windows, go to \r
+<full build path>\DEBUG\MSFT\IA32 and execute SecMain.exe\r
+\r
+To exit the Nt32 emulation platform, type \93reset?at the EFI Shell>\r
+command prompt.  Alternatively, from the graphical interface, select the Boot\r
+Maintenance Manager's \93Reset System?command.\r
+\r
+      NOTE: When creating a new platform, the Platform Name is restricted\r
+      to a single word containing alphanumeric characters, underscore, dash, \r
+      and period.  The space character and other special characters are \r
+      not allowed.\r
+\r
+-----------------------\r
+Notes on Symbolic Debug\r
+-----------------------\r
+To enable EFI Symbolic Debugging, make sure the target output is set to DEBUG\r
+in the text file Tools/Conf/target.txt and then modify the FPD <BuildOptions>\r
+<Options><Option BuildTargets="DEBUG" ToolCode="CC"> and append the following\r
+compiler options to the string:\r
+"/D EFI_GENERATE_SYM_FILE", "/D EFI_SYMBOLIC_DEBUG"\r
+\r
+(If the Option line does not contain "/D EFI_DEBUG", you must add that\r
+option as well.)\r
+\r
+------------------------\r
+Individual Module Builds\r
+------------------------\r
+After running the setup command, you can build individual modules.\r
+  In the command window, cd to the module that you want to build, and\r
+  execute the build command:\r
+    c:\MyWork\edk2\MdePkg\Library\BaseLib\> build\r
+\r
+  You must set the active platform in target.txt for individual module builds. \r
+\r
+-------------------------------------------------------------------------------\r
+\r
+General Information:\r
+===============================================================    \r
+Mechanisms\r
+----------\r
+A brief overview:\r
+\r
+A) The Surface Area Package Description (SPD) file contains information about \r
+the modules that the package contains, including the location of all MSA files, \r
+and public library names and headers that might be provided by a module in the\r
+package.  Packages are defined by SPD files.  (Found in the root of the Package\r
+subdirectory (i.e. EdkNt32Pkg).) The SPD file is further explained in \93EDK II \r
+Build and Packaging Architecture Specification.?
\r
+B) Module Surface Area Definition (MSA) files.  A description of a module's \r
+surface area, with all module specific default flags and features specified.\r
+For additional details, see the "EDK II Module Surface Area Specification" and \r
+the "EDK II Build and Packaging Architecture Specification."\r
+\r
+C) Framework Platform Description (FPD) files.  A description of a platform's\r
+surface are, including a list of modules that are needed by the platform.  To\r
+support individual module builds, developers are not required to provide\r
+information about specific flash devices, nor flash device layout.  \r
+Specific sections in the FPD file control aspects of the build, such \r
+as the Supported Architectures and Build Targets, as well as the tool flags \r
+that are used to create the binary files.  A valid platform file can specify \r
+zero or more modules, so individual modules can be compiled within the context\r
+of a platform (FPD) definition.\r
+\r
+D) Platform Configuration Database (PCD).  A platform database that contains a\r
+variety of current platform settings or directives that can be accessed by a \r
+driver or application.  The PCD is defined by the PCD_Protocol (This is\r
+further explained in the "EDK II Platform Configuration Database Infrastructure \r
+Description."\r
+\r
+E) Library Class.  A library class is a logical grouping of similar functions.\r
+When developing components, the module surface area declares the class of\r
+libraries that can be used by the component. The MSA and SPD files can specify\r
+a recommended instance of the library that a platform integrator (PI) may \r
+select, however this is only a recommendation.  The PI may choose to select a \r
+different library instance to be used during compilation and linking. All \r
+library type modules must include header files in their distribution package, \r
+as well as their MSA files. Components, on the other hand, need provide only an \r
+MSA file and either source or binary files when distributing packages.  The \r
+Library Classes are further explained in the "EDK II Build and Packaging \r
+Architecture Specification."\r
+\r
+=========================================================================\r
+The common operations by developers of new modules are:\r
+-----------------------------------------------\r
+1) Manually creating a new module in a package:\r
+  - The module source code must first be created in an appropriate directory\r
+    (under the package the module is to be a part of.)  \r
+  - An MSA file must be created, spelling out all aspects of the module.\r
+  - The MSA must be added to the SPD for the package to include the module.\r
+\r
+-----------------------------------------------------\r
+2) Adding and Removing modules to and from a package:\r
+\r
+  - Set up environment as Build\r
+  - Adding a module to a package:\r
+     - Generate the MSA file\r
+     - Add a new <Filename> element under <MsaFiles> into\r
+       <PackageDir>\<PackageName>.spd, using arelative path to the package\r
+     - Add a new <ModuleSA> entry under each <FrameworkModules> into the\r
+       <PackageDir>\<PackageName>.fpd file if necessary. \r
+\r
+   - Removing a module from a package:\r
+     - Comment out or remove the corresponding <Filename> element under \r
+       <MsaFiles> from <PackageDir>\<PackageName>.spd\r
+     - Comment out or remove the corresponding <ModuleSA> entry under each\r
+       <FrameworkModules> from <PackageDir>\<PackageName>.fpd if necessary. \r
+\r
+-------------------------------\r
+3) Manually creating a package:\r
+  - Identify the modules that are to be members of the project.\r
+  - Identify the Variables and Guids required in and of the Package (including\r
+    consumption and production information).\r
+  - Create an SPD file defining these modules and calling out their MSA files.\r
+  - Add a new <Filename> element under <PackageList> into \r
+    Tools\Conf\FrameworkDatabase.db, using the relative path to the workspace. \r
+\r
+-----------------------------------------\r
+4) Declaring a new Protocol in a package: \r
+  - This release requires manual editing of the SPD file, adding the protocol\r
+    to the ProtocolDeclarations section of the file. \r
+  - Add the Protocol .h file to the Include\Protocol directory.\r
+  - Add an <Entry> to the <ProtocolDeclarations> element in the \r
+    <PackageName>.spd file\r
+     - Each line contains Protocol base name, followed by the global variable \r
+       name, and        the hex value of the Protocol GUID.\r
+\r
+Example Protocol Entries (NOTE: The Guid entry is a single line in the SPD \r
+file):\r
+<ProtocolDeclarations>\r
+  <Entry Name="Bds">\r
+    <C_Name>gEfiBdsArchProtocolGuid</C_Name>\r
+    <GuidValue>665E3FF6-46CC-11D4-9A38-0090273FC14D</GuidValue>\r
+    <HelpText/>\r
+  </Entry>\r
+  <Entry Name="Cpu">\r
+    <C_Name>gEfiCpuArchProtocolGuid</C_Name>\r
+    <GuidValue>26BACCB1-6F42-11D4-BCE7-0080C73C8881</GuidValue>\r
+    <HelpText/>\r
+  </Entry>\r
+</ProtocolDeclarations>\r
+\r
+------------------------------------\r
+5) Declaring a new PPI in a package:\r
+  - This release requires manual editing of the SPD file\r
+  - Add the PPI .h file to the Include\Ppi directory.\r
+  - Add an <Entry> to the package <PpiDeclarations> element in the \r
+    <PackageName>.spd file\r
+     - Each line contains the PPI base name, followed by the global variable \r
+       name and        the hex value of the PPI GUID.\r
+\r
+Example Ppi Entries (NOTE: The Guid entry is a single line in the SPD file):\r
+<PpiDeclarations>\r
+  <Entry Name="BootInRecoveryMode">\r
+    <C_Name>gEfiPeiBootInRecoveryModePpiGuid</C_Name>\r
+    <GuidValue>17EE496A-D8E4-4B9A-94D1-CE8272300850</GuidValue>\r
+    <HelpText/>\r
+  </Entry>\r
+  <Entry Name="CpuIo">\r
+    <C_Name>gEfiPeiCpuIoPpiInServiceTableGuid</C_Name>\r
+    <GuidValue>E6AF1F7B-FC3F-46DA-A828-A3B457A44282</GuidValue>\r
+    <HelpText/>\r
+  </Entry>\r
+</PpiDeclarations>\r
+\r
+-------------------------------------\r
+6) Declaring a new GUID in a package:\r
+  - This release requires manual editing of the SPD file to include the new\r
+    Guid.  This is identical to adding a ProtocolDeclaration or PpiDeclaration\r
+    element, as described above.\r
+\r
+------------------------------------------\r
+7) Declaring a new PCD entry in a package:\r
+  - This release requires manual editing of the SPD file to include the new\r
+    PCD.  New Pcd entries are added to the PcdDefinitions section of the\r
+    <PackageName>.spd file using the following example for the format\r
+    (NOTE: The hex <Token> value must be unique):\r
+\r
+<PcdDeclarations>\r
+  <PcdEntry ItemType="FIXED_AT_BUILD">\r
+    <C_Name>PcdMaximumUnicodeStringLength</C_Name>\r
+    <Token>0x00000001</Token>\r
+    <TokenSpaceGuidCName>gEfiMdePkgTokenSpaceGuid</TokenSpaceGuidCName>\r
+    <DatumType>UINT32</DatumType>\r
+    <ValidUsage>FIXED_AT_BUILD</ValidUsage>\r
+    <DefaultValue>1000000</DefaultValue>\r
+    <HelpText>The maximum lengh for unicode string.</HelpText>\r
+  </PcdEntry>\r
+</PcdDeclarations>\r
+  \r
+------------------------------\r
+8) Declaring a new Library Class:\r
+  - This release requires manual editing of the SPD file to include the new\r
+    Library Class.  New Library Class entries are added to the \r
+    LibraryClassDeclarations section of the <PackageName>.spd file using\r
+    the following example for the format:\r
+\r
+<LibraryClassDeclarations>\r
+  <LibraryClass Name="BaseLib">\r
+    <IncludeHeader>Include/Library/BaseLib.h</IncludeHeader>\r
+    <HelpText/>\r
+  </LibraryClass>\r
+  <LibraryClass Name="BaseMemoryLib">\r
+    <IncludeHeader>Include/Library/BaseMemoryLib.h</IncludeHeader>\r
+    <HelpText/>\r
+  </LibraryClass>\r
+</LibraryClassDeclarations>\r
+\r
+=======================================================\r
+EDK II Changes Relative to the original EDK:\r
+--------------------------------------------\r
+The EDK II represents significant changes in the structure of the EDK.\r
+Therefore, it is very difficult to isolate all of the changes of this version of\r
+the EDK with the original EDK.\r
+\r
+Of particular note:\r
+\r
+1) EDK II contains new hardware feature support for the ICH SMBUS Libraries.\r
+   These libraries are provided to make Memory Reference Code (MRC) development\r
+   easier.\r
+2) The MDE libraries represent significant changes in source\r
+   (with only limited changes in functionality.)  These new libraries conform\r
+   to the "EDK II Module Development Environment Library Specification.?\r
+3) The Fat Binary and the EDK Shell Binary Packages are functionally identical\r
+   to the original EDK.\r
+4) The EDK tools directory has been expanded to include more tools and more\r
+   tool functionality.\r
+5) The EDK NT32 section has been ported to the new build process, but\r
+   functionally remains the same as the original EDK.\r
+6) The Application "HelloWorld" has been ported to EDK II as well.\r
+\r
+=======================================================\r
+Virus scanned by McAfee VirusScan Enterprise 8.0.0, Virus Definitions 4890, no\r
+virus detected.\r
diff --git a/ReleaseNotes.txt b/ReleaseNotes.txt
deleted file mode 100644 (file)
index bb2c923..0000000
+++ /dev/null
@@ -1,669 +0,0 @@
-Intel(R) Platform Innovation Framework for EFI\r
-EFI Development Kit II (EDK II) \r
-Root Package 1.00\r
-2006-07-18\r
-\r
-Intel is a trademark or registered trademark of Intel Corporation or its \r
-subsidiaries in the United States and other countries.\r
-* Other names and brands may be claimed as the property of others.\r
-Copyright (c) 2006, Intel Corporation\r
-\r
-This document provides updates to documentation, along with a description on \r
-how to install and build the EDK II.\r
-\r
-Package Contents\r
-----------------\r
-  ReleaseNote.txt- These release notes for the package.\r
-  MdePkg         - Industry-standard headers and libraries\r
-  Tools          - Build -specific tools that are designed to help the \r
-                   developer create and modify drivers and libraries\r
-  EdkModulePkg   - Reference drivers\r
-  EdkFatBinPkg   - Binary DXE drivers for the Fat 32 file system\r
-  EdkShellBinPkg - Binary Shell applications and commands\r
-  EdkNt32Pkg     - NT32 Emulation platform reference\r
-\r
-Note: MDE and MDK that appear in other documentation refer to the MdePkg and\r
-Tools packages, respectively.  While, these two packages are the minimum \r
-requirement for developing EDK II Packageswe recommend that you download all \r
-of the top-level files listed above.\r
-\r
-The following package is available as a separate project, under a separate \r
-license, on the TianoCore.org website: https://fat-driver2.tianocore.org\r
-\r
-  EdkFatPkg      - A package containing source DXE drivers for the Fat 32 file\r
-                   system\r
-\r
-Documents have the following filenames (to download these documents, see \93Notes \r
-on Documentation\94 later in these Release Notes):\r
-  EDK II Module Development Environment Library Specification, v0.58 \r
-      (MDE_Library_Spec_0_58.rtf)\r
-  EDK II Build and Packaging Architecture Specification, v0.53\r
-      (Build_Packaging_Spec_0_53.rtf)\r
-  EDK II Platform Configuration Database Infrastructure Description, v0.54\r
-      (PCD_Infrastructure_0_54.rtf)\r
-  EDK II Module Surface Area Specification, v0.51\r
-      (Module_Surface_Area_0_50.rtf)\r
-  EDK II Module Development Environment Package Specification, v0.51\r
-      (MDE_Package_Spec_0_51.rtf)\r
-  EDK II C Coding Standards Specification v0.51\r
-      (C_Coding_Standards_Specification_ 0_51.rtf)\r
-  EDK II Subversion Setup Guide\r
-      (edk2-subversion-setup.rtf)\r
-\r
-Pre-Requisites\r
---------------\r
-The following list of tools must be installed on the development workstation\r
-prior to using the EDK II.\r
-\r
-Compiler Tool Chain\r
-      Microsoft* Visual Studio .NET 2003*  (http://www.microsoft.com)\r
-    or\r
-      A special GCC version 4.x or later (http://gcc.gnu.org). See below.\r
-\r
-Assembler Tool Chain\r
-      Microsoft Macro Assembler, version 6.15 or later\r
-    or\r
-      GNU binutils 2.16.1 or later\r
-\r
-Java Development Kit ( Java 5.0 or later)\r
-      Sun* jdk-1.5.0_06 or later (http://java.sun.com)\r
-    or\r
-      Bea Systems* jrockit-25.2.0-jdk1.5.0_03 or later (http://www.bea.com)\r
-\r
-Java Tools\r
-    Apache-ANT, version 1.6.5 or later (http://ant.apache.org)\r
-    Ant-contrib, version 1.0b2 or later\r
-      (http://prdownloads.sourceforge.net/ant-contrib/ant-contrib-1.0b2-bin.zip?download)\r
-    Saxon8, version 8.1.1\r
-      (http://prdownloads.sourceforge.net/saxon/saxonb8-1-1.zip?download)\r
-    XMLBeans, version 2.1.0 (http://xmlbeans.apache.org)\r
-      DO NOT download the latest XMLBeans, version 2.2.0. It is not compatible \r
-      with Saxon8, version 8.1.1.\r
-\r
-Other Tools\r
-    TortoiseSVN version 1.3.3. (http://tortoisesvn.tigris.org/)\r
-\r
-Optional Tools\r
---------------\r
-Compiler Tool Chains:\r
-    Intel(R) C++ Compiler for Windows*, ver. 9.0 or later (http://www.intel.com)\r
-    Intel(R) C Compiler for EFI Byte Code, ver. 1.2 or later \r
-      (http://www.intel.com/cd/software/products/asmo-na/eng/compilers/efibc/index.htm)\r
-    Microsoft Driver Development Kit, version 3790.1830 or later\r
-      (http://www.microsoft.com/whdc/devtools/ddk/orderddkcd.mspx)\r
-    Microsoft ACPI Source Language Assembler, Version 1.0.13NT or later\r
-    Intel ACPI Component Architecture, version 20060113\r
-\r
------------------------------------------------\r
-Notes on Required Tools (Source Control System)\r
------------------------------------------------\r
-The EDK II is being managed by the Subversion Source Control on Tianocore.org.\r
-Subversion provides speed, security, and additional features. The\r
-recommended client is TortoiseSVN version 1.3.3. \r
- (Available at http://tortoisesvn.tigris.org/)\r
-\r
-The checkout procedures on the Tianocore.org Web site include\r
-instructions for the use of Subversion Source Control.\r
-\r
-The URL of the EDK II repository is:\r
-  https://edk2.tianocore.org/svn/edk2/trunk/edk2\r
-\r
-\r
---------------------------------------------------------------------\r
-Notes On Required Tools (With examples for Windows, OS X, and Linux*) \r
---------------------------------------------------------------------\r
-Software Installation Order:\r
-  After installing the compiler tools and your Subversion client, install the \r
-  following required tools in this order: \r
-    1. Java JDK\r
-    2. Apache-Ant\r
-    3. ant-contrib\r
-    4. xmlbeans\r
-    5. saxon8\r
-\r
-Java Development Kit:\r
\r
-   The Java Environment Variable must be set before attempting to build.\r
-       For Sun JDK (see note below\86):\r
-              set JAVA_HOME=c:\Java\jdk1.5.0_06  (Windows example)\r
-              export JAVA_HOME=/Library/Java/Home/ (OS X example)\r
-              export JAVA_HOME=/usr/lib/j2sdk1.5-sun/ (Linux example)\r
-       For Bea Systems:\r
-              set JAVA_HOME=c:\Java\jrockit-R26.0.0-jdk1.5.0_04\r
\r
-  \86 When using the Sun JDK5.0:\r
-    During installation, you should specify the install directory as C:\Java\r
-    instead of C:\Program Files\(or some other drive letter.)  While installing\r
-    to this non-standard location is not required, in practice, it seems to work \r
-    more reliably. \r
-    For the JDK, the install path is C:\Java\jdk1.5.0_06\r
-    For the JRE, the install path is C:\Java\jre1.5.0_06\r
-    Alternatively, you can specify C:\sunjavajdk and C:\sunjavajre.\r
-\r
-    NOTE: You cannot combine the location for the JDK and the JRE, because the \r
-    JRE install removes most of the binaries and libraries installed by the JDK\r
-    install.\r
-\r
-Java Tools:\r
-    The Apache-ANT requires the ANT_HOME environment variable to be set before\r
-    attempting to build:\r
-         set ANT_HOME=c:\<full path to where ant was installed>\r
-          export ANT_HOME=~/ExternalTools/apache-ant (OS X and Linux example)\r
-\r
-    The ant-contrib.jar file should be installed in the %ANT_HOME%\lib \r
-    directory.\r
-\r
-    XMLBeans, requires the XMLBEANS_HOME environment variable to be set\r
-    before attempting to build:\r
-         set XMLBEANS_HOME=C:\<full path to where xmlbeans was installed>\r
-          export XMLBEANS_HOME=~/ExternalTools/xmlbeans (OS X and Linux example)\r
-\r
-    Copy the saxon8.jar file to the %XMLBEANS_HOME%\lib directory.\r
-\r
-   The Ant and XMLBean tools must be in the path.\r
-     MS system example:\r
-        set PATH=%PATH%;%ANT_HOME%\bin;%XMLBEANS_HOME%\bin\r
-     Linux/OS X bash shell example:\r
-        export PATH=$PATH:${ANT_HOME}/bin:${XMLBEANS_HOME}/bin\r
-\r
---------------------\r
-A Word on Apache-ANT\r
---------------------\r
-The Apache-ANT program is a build tool that uses XML-based project files.\r
-Similar to Makefiles, these project files may contain multiple targets.  Most\r
-build.xml files in EDK II are auto-generated; any edits performed on the\r
-build.xml files will be overwritten by the next build.\r
-\r
-Pre-defined targets in the build.xml file include:\r
-    all      - This target builds binaries for defined architectures.\r
-    clean    - This target removes object files generated by commands.\r
-    cleanall - This target removes all generated files and directories.\r
-\r
-----------------------------\r
-A Word on the GCC Tool Chain\r
-----------------------------\r
-\r
-EDK II will not compile with a standard Linux gcc tool chain. While Linux\r
-distributions are usually based on ELF, EDK II requires a version of gcc that\r
-is configured to produce PE-COFF images. You will find a script in <Root of\r
-EDK2 tree>/Tools/gcc/tianoCross-gcc-4.1 that will download, configure, compile,\r
-and install a gcc 4.1 cross-compile tool chain for EDK II development. This\r
-custom tool chain supports the IA-32 architecture. It can be built and run on\r
-Cygwin, Linux, and many other POSIX-compliant host operating environments. To\r
-compile the custom gcc tool chain, you need the following tools on your host\r
-computer: bash, gcc, gmake, curl (or wget).\r
-\r
-Only the MdePkg and EdkModulePkg are currently supported by gcc builds. Other\r
-builds, such as the EdkNt32Pkg, will not compile with gcc. By default, the edk2\r
-will try to build the NT32.fpd, which is not supported by gcc. So, you need to\r
-change the Tools/Conf/target.txt.\r
-\r
-The cross-compile build script has been tested on Cygwin, OS X and Linux. You\r
-should expect to hack on these scripts to make them work on your system. You\r
-may need to install additional tools on your system to make the scripts work.\r
-\r
-You will need\r
-\r
-  A recent version (3.0 or later should be fine) of gcc that is able to produce\r
-    executables for the machine that you want to run this compiler on (the host\r
-    machine).\r
-  wget or curl (which enables the download of the gcc compiler source code)\r
-  tar\r
-  bzip\r
-  gzip\r
-  bash\r
-  and possibly others\r
-\r
-CYGWIN Notes\r
-\r
-You should setup cygwin to use binmode on all mounts. When you initially\r
-install cygwin it gives you the choice of Unix file mode (recommended) or DOS\r
-file mode. Unix mode will cause all the cygwin directories to be mounted in\r
-binmode, while DOS will mount the dirs in textmode. Here is an example of a\r
-cygwin install where the dirs are (properly) mounted in binmode.\r
-To view mount information, type: \r
-    mount\r
-\r
-C:\cygwin\bin on /usr/bin type user (binmode)\r
-C:\cygwin\lib on /usr/lib type user (binmode)\r
-c:\workspace on /workspace type system (binmode)\r
-C:\cygwin on / type user (binmode)\r
-\r
-If you use textmode, it is likely that the build will fail in a way that is\r
-hard to debug.  Textmode is required to retain or add the DOS ^M characters\r
-in DOS batch files during file editing sessions.\r
-\r
-You can switch from textmode to binmode for compilation by executing the \r
-following:\r
-    mount -b --change-cygdrive-prefix cygdrive\r
-\r
-Cygwin is pretty slow, so it is not recommended for large builds.\r
-\r
-\r
-\r
-\r
-\r
-The platform to be built is identified by the Tools/Conf/target.txt file:\r
-\r
-#\r
-#  PROPERTY              Type       Use         Description\r
-#  ----------------      --------   --------    -----------------------------------------------------------\r
-#  ACTIVE_PLATFORM       Filename   Recommended Specify the WORKSPACE relative Path and Filename \r
-#                                               of the platform FPD file that will be used for the build\r
-#                                               This line is required if and only if the current working\r
-#                                               directory does not contain one or more FPD files.\r
-\r
-ACTIVE_PLATFORM       =\r
\r
-You can leave it black, as above, or set it to any .fpd file in the workspace.\r
-If you leave it blank, then you just cd to the dir that contains the .fpd that\r
-you would like to build (MdePkg/ or EdkModulePkg/) and then type build.\r
-\r
-----------------------------\r
-A Word on compiling on Linux\r
-----------------------------\r
-\r
-In order to compile on Linux, you will need to have the e2fsprogs-dev package\r
-installed.  Check your distribution for the rpm, deb or other package format.\r
-This package contains the uuid library and header that are used by some of the\r
-host tools.\r
-\r
-If you are running on x86_64 Linux, then you should install a 64 bit version of\r
-the Java JDK. The version that was used was jdk-1_5_0_07-linux-amd64-rpm.bin.\r
-It may be downloaded from sun.com.\r
-\r
------------------------------------------\r
-A Word on compiling under Cygwin with gcc\r
------------------------------------------\r
-\r
-Cygwin is a POSIX style operating environment for Windows. It is possible to\r
-compile the EDK 2 using gcc and cygwin. Compiling under cygwin is slow, because \r
-the underlying file accesses are slow in cygwin. For this reason, we do not \r
-encourage the use of cygwin. A true unix system will be a superior choice for \r
-those wishing to compile with gcc.\r
-\r
-Make sure that you select the e2fsprogs development package when you install\r
-cygwin. It is necessary for the GenFvImage tool.\r
-\r
-----------------------------------------\r
-A Word on gcc for Processor Architectures\r
-----------------------------------------\r
-\r
-Currently gcc support is limited to IA-32 builds, generating IA-32 PE32 images. \r
-\r
-The X64 bit (Intel 64, etc.) support under the gcc compiler does not support the EFIAPI \r
-calling convention (as defined in the UEFI 2.0 specification Chapter 2), so it is not \r
-possible to build a working EFI image for an X64 environment.  Since the x64 gcc does \r
-not support the EFIAPI calling convention the x64 tools do not support generating a \r
-PE32+ image.  The EFIAPI calling convention is very similar to the Microsoft x64 \r
-calling convention.\r
-\r
-On Itanium® Processors the gcc compiler does not support generating a PE32+ image.\r
-\r
------------------------\r
-Notes on Documentation\r
------------------------\r
-The documents are being managed by the Subversion Source Control on\r
-Tianocore.org.  The document repository is "docs" and must be checked out\r
-separately from the EDK II source tree. Refer to the checkout procedures on\r
-the Tianocore.org Web site for EDK II.\r
-\r
-The URL of the document repository is:\r
-  https://edk2.tianocore.org/svn/edk2/trunk/docs\r
-\r
\r
--------------------------------------------------------------------------------\r
-Quick Start\r
------------\r
-(assumes Microsoft Tools and OS environment, for GCC Tools or Linux, see \r
-"Detailed Starting Instructions" below)\r
-\r
-Follow the instructions at https://edk2.tianocore.org/servlets/ProjectSource to\r
-check out the entire EDK II source tree.\r
-\r
-In a command window, change to the top-level directory of the EDK II source.\r
-\r
-To test your tool chain setup and to build the supplied tools, execute:\r
-    c:\MyWork\edk2\> edksetup ForceRebuild\r
-\r
-(The edksetup script is referred to as the setup command throughout the \r
-rest of this document.)\r
-      NOTE: You should run the setup command at the start of every session.\r
-            This configures the environment to include the TianoTools and the\r
-            Java applications and libraries.\r
-\r
-You will need to set the WORKSPACE environment variable, or run the edksetup\r
-script (without any arguments), any time you want to build.\r
-\r
-  Set the WORKSPACE environment variable, e.g.:\r
-\r
-    c:\> set WORKSPACE=C:\MyWork\edk2\r
-\r
-You may need to edit the text files Tools/Conf/target.txt and\r
-Tools/Conf/tools_def.txt (created by edksetup) using your favorite \r
-text editor to ensure that the paths to the tools you want to use \r
-to build EDK II binaries are correct.  These files contain the default \r
-paths (as per the default installation of the tools), so a customized \r
-install may require this manual process.\r
-\r
-Once this is completed, you are ready to test the build, by executing:\r
-    c:\MyWork\edk2\> build\r
-\r
-This command builds the active platform specified in text file target.txt. If \r
-the active platform is not specified target.txt, you must execute the build \r
-command from the sub-directory that contains FPD files. For more information \r
-about the active platform policy, see the \93EDK II Build and Packaging \r
-Architecture Specification.\94\r
-\r
--------------------------------------------------------------------------------\r
-Detailed Starting Instructions\r
-------------------------------\r
-\r
-Follow the instructions at https://edk2.tianocore.org/servlets/ProjectSource to\r
-check out the entire EDK II source tree.\r
-\r
-In a command window, change to the top-level directory of the EDK II source.\r
-\r
-If the active compiler tool chain is GCC, you must set the\r
-environment variable, TOOL_CHAIN to "gcc" before running the\r
-edksetup script.  Example: export TOOL_CHAIN=gcc\r
-\r
-To test your tool chain setup and to build the supplied tools, execute:\r
-    c:\MyWork\edk2\> edksetup ForceRebuild\r
-\r
-On Linux systems, you must source the edksetup.sh file to load the correct\r
-settings into your shell.\r
-\r
-    . edksetup.sh # Note the dot.\r
-\r
-If you have recently updated your code from subversion, the tools will need to\r
-be rebuilt if there were any code changes made to them. You can request that\r
-the tools get rebuilt by typing:\r
-\r
-    . edksetup.sh Rebuild # Unix-like systems\r
-    edksetup.bat Rebuild  # Windows\r
-\r
-The edksetup script is referred to as the setup command throughout the \r
-rest of this document.\r
-      NOTE: You should run the setup command at the start of every session.\r
-            This configures the environment to include the TianoTools and the\r
-            Java applications and libraries.\r
-\r
-Any changes to the tool source code or XML Schema documents require that\r
-you execute the following:\r
-   c:\MyWork\edk2\> edksetup ForceRebuild\r
-\r
-You must set the WORKSPACE environment variable, or run the edksetup\r
-script (without any arguments), any time you want to build.\r
-\r
-  Set the WORKSPACE environment variable, e.g.:\r
-\r
-    c:\> set WORKSPACE=C:\MyWork\edk2\r
-\r
-You may need to edit the text files Tools/Conf/target.txt and\r
-Tools/Conf/tools_def.txt (created by edksetup) using your favorite \r
-text editor to ensure that the paths to the tools you want to use \r
-to build EDK II binaries are correct.  These files contain the default \r
-paths (as per the default installation of the tools), so a customized \r
-tool installation may require this manual process.\r
-\r
-Once this is completed, you are ready to test the build, by executing:\r
-    c:\MyWork\edk2\> build\r
-\r
-This command builds the active platform specified in text file target.txt. If \r
-the active platform is not specified, go to the sub-directory that contains FPD \r
-files and execute the build command. For more information about the active \r
-platform policy, see the \93EDK II Build and Packaging Architecture \r
-Specification.\94\r
-\r
---------------------------\r
-Individual Platform Builds\r
---------------------------\r
-After running the setup command, you can build individual platforms.\r
-In the command window:\r
-  Set the active platform in target.txt, and execute this command:\r
-    c:\<directory>\> build\r
-or\r
-  cd to the platform (FPD file) that you want to build and execute this command:\r
-    c:\MyWork\edk2\EdkNt32Pkg\> build\r
-\r
-  Note that the active platform specified in target.txt overrides the platform \r
-  specified by any FPD file in the current directory. For more   information \r
-  about active platform policy, see the \93EDK II Build and Packaging Architecture\r
-  Specification.\94 \r
-\r
-To run the Nt32 emulation platform under Microsoft Windows, go to \r
-<full build path>\DEBUG\MSFT\IA32 and execute SecMain.exe\r
-\r
-To exit the Nt32 emulation platform, type \93reset\94 at the EFI Shell>\r
-command prompt.  Alternatively, from the graphical interface, select the Boot\r
-Maintenance Manager's \93Reset System\94 command.\r
-\r
-      NOTE: When creating a new platform, the Platform Name is restricted\r
-      to a single word containing alphanumeric characters, underscore, dash, \r
-      and period.  The space character and other special characters are \r
-      not allowed.\r
-\r
------------------------\r
-Notes on Symbolic Debug\r
------------------------\r
-To enable EFI Symbolic Debugging, make sure the target output is set to DEBUG\r
-in the text file Tools/Conf/target.txt and then modify the FPD <BuildOptions>\r
-<Options><Option BuildTargets="DEBUG" ToolCode="CC"> and append the following\r
-compiler options to the string:\r
-"/D EFI_GENERATE_SYM_FILE", "/D EFI_SYMBOLIC_DEBUG"\r
-\r
-(If the Option line does not contain "/D EFI_DEBUG", you must add that\r
-option as well.)\r
-\r
-------------------------\r
-Individual Module Builds\r
-------------------------\r
-After running the setup command, you can build individual modules.\r
-  In the command window, cd to the module that you want to build, and\r
-  execute the build command:\r
-    c:\MyWork\edk2\MdePkg\Library\BaseLib\> build\r
-\r
-  You must set the active platform in target.txt for individual module builds. \r
-\r
--------------------------------------------------------------------------------\r
-\r
-General Information:\r
-===============================================================    \r
-Mechanisms\r
-----------\r
-A brief overview:\r
-\r
-A) The Surface Area Package Description (SPD) file contains information about \r
-the modules that the package contains, including the location of all MSA files, \r
-and public library names and headers that might be provided by a module in the\r
-package.  Packages are defined by SPD files.  (Found in the root of the Package\r
-subdirectory (i.e. EdkNt32Pkg).) The SPD file is further explained in \93EDK II \r
-Build and Packaging Architecture Specification.\94\r
\r
-B) Module Surface Area Definition (MSA) files.  A description of a module's \r
-surface area, with all module specific default flags and features specified.\r
-For additional details, see the "EDK II Module Surface Area Specification" and \r
-the "EDK II Build and Packaging Architecture Specification."\r
-\r
-C) Framework Platform Description (FPD) files.  A description of a platform's\r
-surface are, including a list of modules that are needed by the platform.  To\r
-support individual module builds, developers are not required to provide\r
-information about specific flash devices, nor flash device layout.  \r
-Specific sections in the FPD file control aspects of the build, such \r
-as the Supported Architectures and Build Targets, as well as the tool flags \r
-that are used to create the binary files.  A valid platform file can specify \r
-zero or more modules, so individual modules can be compiled within the context\r
-of a platform (FPD) definition.\r
-\r
-D) Platform Configuration Database (PCD).  A platform database that contains a\r
-variety of current platform settings or directives that can be accessed by a \r
-driver or application.  The PCD is defined by the PCD_Protocol (This is\r
-further explained in the "EDK II Platform Configuration Database Infrastructure \r
-Description."\r
-\r
-E) Library Class.  A library class is a logical grouping of similar functions.\r
-When developing components, the module surface area declares the class of\r
-libraries that can be used by the component. The MSA and SPD files can specify\r
-a recommended instance of the library that a platform integrator (PI) may \r
-select, however this is only a recommendation.  The PI may choose to select a \r
-different library instance to be used during compilation and linking. All \r
-library type modules must include header files in their distribution package, \r
-as well as their MSA files. Components, on the other hand, need provide only an \r
-MSA file and either source or binary files when distributing packages.  The \r
-Library Classes are further explained in the "EDK II Build and Packaging \r
-Architecture Specification."\r
-\r
-=========================================================================\r
-The common operations by developers of new modules are:\r
------------------------------------------------\r
-1) Manually creating a new module in a package:\r
-  - The module source code must first be created in an appropriate directory\r
-    (under the package the module is to be a part of.)  \r
-  - An MSA file must be created, spelling out all aspects of the module.\r
-  - The MSA must be added to the SPD for the package to include the module.\r
-\r
------------------------------------------------------\r
-2) Adding and Removing modules to and from a package:\r
-\r
-  - Set up environment as Build\r
-  - Adding a module to a package:\r
-     - Generate the MSA file\r
-     - Add a new <Filename> element under <MsaFiles> into\r
-       <PackageDir>\<PackageName>.spd, using arelative path to the package\r
-     - Add a new <ModuleSA> entry under each <FrameworkModules> into the\r
-       <PackageDir>\<PackageName>.fpd file if necessary. \r
-\r
-   - Removing a module from a package:\r
-     - Comment out or remove the corresponding <Filename> element under \r
-       <MsaFiles> from <PackageDir>\<PackageName>.spd\r
-     - Comment out or remove the corresponding <ModuleSA> entry under each\r
-       <FrameworkModules> from <PackageDir>\<PackageName>.fpd if necessary. \r
-\r
--------------------------------\r
-3) Manually creating a package:\r
-  - Identify the modules that are to be members of the project.\r
-  - Identify the Variables and Guids required in and of the Package (including\r
-    consumption and production information).\r
-  - Create an SPD file defining these modules and calling out their MSA files.\r
-  - Add a new <Filename> element under <PackageList> into \r
-    Tools\Conf\FrameworkDatabase.db, using the relative path to the workspace. \r
-\r
------------------------------------------\r
-4) Declaring a new Protocol in a package: \r
-  - This release requires manual editing of the SPD file, adding the protocol\r
-    to the ProtocolDeclarations section of the file. \r
-  - Add the Protocol .h file to the Include\Protocol directory.\r
-  - Add an <Entry> to the <ProtocolDeclarations> element in the \r
-    <PackageName>.spd file\r
-     - Each line contains Protocol base name, followed by the global variable \r
-       name, and        the hex value of the Protocol GUID.\r
-\r
-Example Protocol Entries (NOTE: The Guid entry is a single line in the SPD \r
-file):\r
-<ProtocolDeclarations>\r
-  <Entry Name="Bds">\r
-    <C_Name>gEfiBdsArchProtocolGuid</C_Name>\r
-    <GuidValue>665E3FF6-46CC-11D4-9A38-0090273FC14D</GuidValue>\r
-    <HelpText/>\r
-  </Entry>\r
-  <Entry Name="Cpu">\r
-    <C_Name>gEfiCpuArchProtocolGuid</C_Name>\r
-    <GuidValue>26BACCB1-6F42-11D4-BCE7-0080C73C8881</GuidValue>\r
-    <HelpText/>\r
-  </Entry>\r
-</ProtocolDeclarations>\r
-\r
-------------------------------------\r
-5) Declaring a new PPI in a package:\r
-  - This release requires manual editing of the SPD file\r
-  - Add the PPI .h file to the Include\Ppi directory.\r
-  - Add an <Entry> to the package <PpiDeclarations> element in the \r
-    <PackageName>.spd file\r
-     - Each line contains the PPI base name, followed by the global variable \r
-       name and        the hex value of the PPI GUID.\r
-\r
-Example Ppi Entries (NOTE: The Guid entry is a single line in the SPD file):\r
-<PpiDeclarations>\r
-  <Entry Name="BootInRecoveryMode">\r
-    <C_Name>gEfiPeiBootInRecoveryModePpiGuid</C_Name>\r
-    <GuidValue>17EE496A-D8E4-4B9A-94D1-CE8272300850</GuidValue>\r
-    <HelpText/>\r
-  </Entry>\r
-  <Entry Name="CpuIo">\r
-    <C_Name>gEfiPeiCpuIoPpiInServiceTableGuid</C_Name>\r
-    <GuidValue>E6AF1F7B-FC3F-46DA-A828-A3B457A44282</GuidValue>\r
-    <HelpText/>\r
-  </Entry>\r
-</PpiDeclarations>\r
-\r
--------------------------------------\r
-6) Declaring a new GUID in a package:\r
-  - This release requires manual editing of the SPD file to include the new\r
-    Guid.  This is identical to adding a ProtocolDeclaration or PpiDeclaration\r
-    element, as described above.\r
-\r
-------------------------------------------\r
-7) Declaring a new PCD entry in a package:\r
-  - This release requires manual editing of the SPD file to include the new\r
-    PCD.  New Pcd entries are added to the PcdDefinitions section of the\r
-    <PackageName>.spd file using the following example for the format\r
-    (NOTE: The hex <Token> value must be unique):\r
-\r
-<PcdDeclarations>\r
-  <PcdEntry ItemType="FIXED_AT_BUILD">\r
-    <C_Name>PcdMaximumUnicodeStringLength</C_Name>\r
-    <Token>0x00000001</Token>\r
-    <TokenSpaceGuidCName>gEfiMdePkgTokenSpaceGuid</TokenSpaceGuidCName>\r
-    <DatumType>UINT32</DatumType>\r
-    <ValidUsage>FIXED_AT_BUILD</ValidUsage>\r
-    <DefaultValue>1000000</DefaultValue>\r
-    <HelpText>The maximum lengh for unicode string.</HelpText>\r
-  </PcdEntry>\r
-</PcdDeclarations>\r
-  \r
-------------------------------\r
-8) Declaring a new Library Class:\r
-  - This release requires manual editing of the SPD file to include the new\r
-    Library Class.  New Library Class entries are added to the \r
-    LibraryClassDeclarations section of the <PackageName>.spd file using\r
-    the following example for the format:\r
-\r
-<LibraryClassDeclarations>\r
-  <LibraryClass Name="BaseLib">\r
-    <IncludeHeader>Include/Library/BaseLib.h</IncludeHeader>\r
-    <HelpText/>\r
-  </LibraryClass>\r
-  <LibraryClass Name="BaseMemoryLib">\r
-    <IncludeHeader>Include/Library/BaseMemoryLib.h</IncludeHeader>\r
-    <HelpText/>\r
-  </LibraryClass>\r
-</LibraryClassDeclarations>\r
-\r
-=======================================================\r
-EDK II Changes Relative to the original EDK:\r
---------------------------------------------\r
-The EDK II represents significant changes in the structure of the EDK.\r
-Therefore, it is very difficult to isolate all of the changes of this version of\r
-the EDK with the original EDK.\r
-\r
-Of particular note:\r
-\r
-1) EDK II contains new hardware feature support for the ICH SMBUS Libraries.\r
-   These libraries are provided to make Memory Reference Code (MRC) development\r
-   easier.\r
-2) The MDE libraries represent significant changes in source\r
-   (with only limited changes in functionality.)  These new libraries conform\r
-   to the "EDK II Module Development Environment Library Specification.\94 \r
-3) The Fat Binary and the EDK Shell Binary Packages are functionally identical\r
-   to the original EDK.\r
-4) The EDK tools directory has been expanded to include more tools and more\r
-   tool functionality.\r
-5) The EDK NT32 section has been ported to the new build process, but\r
-   functionally remains the same as the original EDK.\r
-6) The Application "HelloWorld" has been ported to EDK II as well.\r
-\r
-=======================================================\r
-Virus scanned by McAfee VirusScan Enterprise 8.0.0, Virus Definitions 4718, no\r
-virus detected.\r
-\r