lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 1 | Intel(R) Platform Innovation Framework for EFI
|
yshi8 | 362271d | 2006-07-06 10:42:42 +0000 | [diff] [blame] | 2 | EFI Development Kit II (EDK II)
|
| 3 | Root Package 1.00
|
michaelx_krau | 020fa45 | 2006-07-18 16:31:13 +0000 | [diff] [blame] | 4 | 2006-07-18
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 5 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 6 | Intel is a trademark or registered trademark of Intel Corporation or its
|
| 7 | subsidiaries in the United States and other countries.
|
| 8 | * Other names and brands may be claimed as the property of others.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 9 | Copyright (c) 2006, Intel Corporation
|
| 10 |
|
| 11 | This document provides updates to documentation, along with a description on
|
yshi8 | 362271d | 2006-07-06 10:42:42 +0000 | [diff] [blame] | 12 | how to install and build the EDK II.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 13 |
|
| 14 | Package Contents
|
| 15 | ----------------
|
| 16 | ReleaseNote.txt- These release notes for the package.
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 17 | MdePkg - Industry-standard headers and libraries
|
| 18 | Tools - Build -specific tools that are designed to help the
|
| 19 | developer create and modify drivers and libraries
|
| 20 | EdkModulePkg - Reference drivers
|
| 21 | EdkFatBinPkg - Binary DXE drivers for the Fat 32 file system
|
| 22 | EdkShellBinPkg - Binary Shell applications and commands
|
| 23 | EdkNt32Pkg - NT32 Emulation platform reference
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 24 |
|
| 25 | Note: MDE and MDK that appear in other documentation refer to the MdePkg and
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 26 | Tools packages, respectively. While, these two packages are the minimum
|
| 27 | requirement for developing EDK II Packageswe recommend that you download all
|
| 28 | of the top-level files listed above.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 29 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 30 | The following package is available as a separate project, under a separate
|
| 31 | license, on the TianoCore.org website: https://fat-driver2.tianocore.org
|
lhauch | c6c0039 | 2006-07-13 01:45:03 +0000 | [diff] [blame] | 32 |
|
| 33 | EdkFatPkg - A package containing source DXE drivers for the Fat 32 file
|
| 34 | system
|
| 35 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 36 | Documents have the following filenames (to download these documents, see Notes
|
| 37 | on Documentation later in these Release Notes):
|
| 38 | EDK II Module Development Environment Library Specification, v0.58
|
| 39 | (MDE_Library_Spec_0_58.rtf)
|
| 40 | EDK II Build and Packaging Architecture Specification, v0.53
|
| 41 | (Build_Packaging_Spec_0_53.rtf)
|
| 42 | EDK II Platform Configuration Database Infrastructure Description, v0.54
|
| 43 | (PCD_Infrastructure_0_54.rtf)
|
| 44 | EDK II Module Surface Area Specification, v0.51
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 45 | (Module_Surface_Area_0_50.rtf)
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 46 | EDK II Module Development Environment Package Specification, v0.51
|
| 47 | (MDE_Package_Spec_0_51.rtf)
|
| 48 | EDK II C Coding Standards Specification v0.51
|
| 49 | (C_Coding_Standards_Specification_ 0_51.rtf)
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 50 | EDK II Subversion Setup Guide
|
| 51 | (edk2-subversion-setup.rtf)
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 52 |
|
| 53 | Pre-Requisites
|
| 54 | --------------
|
| 55 | The following list of tools must be installed on the development workstation
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 56 | prior to using the EDK II.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 57 |
|
| 58 | Compiler Tool Chain
|
| 59 | Microsoft* Visual Studio .NET 2003* (http://www.microsoft.com)
|
| 60 | or
|
bbahnsen | 4347544 | 2006-06-07 00:21:44 +0000 | [diff] [blame] | 61 | A special GCC version 4.x or later (http://gcc.gnu.org). See below.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 62 |
|
| 63 | Assembler Tool Chain
|
| 64 | Microsoft Macro Assembler, version 6.15 or later
|
| 65 | or
|
bbahnsen | 8fb9e6b | 2006-05-03 22:45:39 +0000 | [diff] [blame] | 66 | GNU binutils 2.16.1 or later
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 67 |
|
| 68 | Java Development Kit ( Java 5.0 or later)
|
hche10x | ef6e2ef | 2006-07-13 12:13:23 +0000 | [diff] [blame] | 69 | Sun* jdk-1.5.0_06 or later (http://java.sun.com)
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 70 | or
|
| 71 | Bea Systems* jrockit-25.2.0-jdk1.5.0_03 or later (http://www.bea.com)
|
| 72 |
|
| 73 | Java Tools
|
| 74 | Apache-ANT, version 1.6.5 or later (http://ant.apache.org)
|
bbahnsen | 5051888 | 2006-05-03 18:10:56 +0000 | [diff] [blame] | 75 | Ant-contrib, version 1.0b2 or later
|
yshi8 | 782eb16 | 2006-07-07 09:38:58 +0000 | [diff] [blame] | 76 | (http://prdownloads.sourceforge.net/ant-contrib/ant-contrib-1.0b2-bin.zip?download)
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 77 | Saxon8, version 8.1.1
|
| 78 | (http://prdownloads.sourceforge.net/saxon/saxonb8-1-1.zip?download)
|
yshi8 | 782eb16 | 2006-07-07 09:38:58 +0000 | [diff] [blame] | 79 | XMLBeans, version 2.1.0 (http://xmlbeans.apache.org)
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 80 | DO NOT download the latest XMLBeans, version 2.2.0. It is not compatible
|
| 81 | with Saxon8, version 8.1.1.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 82 |
|
| 83 | Other Tools
|
| 84 | TortoiseSVN version 1.3.3. (http://tortoisesvn.tigris.org/)
|
| 85 |
|
| 86 | Optional Tools
|
| 87 | --------------
|
| 88 | Compiler Tool Chains:
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 89 | Intel(R) C++ Compiler for Windows*, ver. 9.0 or later (http://www.intel.com)
|
| 90 | Intel(R) C Compiler for EFI Byte Code, ver. 1.2 or later
|
bbahnsen | 8fb9e6b | 2006-05-03 22:45:39 +0000 | [diff] [blame] | 91 | (http://www.intel.com/cd/software/products/asmo-na/eng/compilers/efibc/index.htm)
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 92 | Microsoft Driver Development Kit, version 3790.1830 or later
|
bbahnsen | 8fb9e6b | 2006-05-03 22:45:39 +0000 | [diff] [blame] | 93 | (http://www.microsoft.com/whdc/devtools/ddk/orderddkcd.mspx)
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 94 | Microsoft ACPI Source Language Assembler, Version 1.0.13NT or later
|
| 95 | Intel ACPI Component Architecture, version 20060113
|
| 96 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 97 | -----------------------------------------------
|
| 98 | Notes on Required Tools (Source Control System)
|
| 99 | -----------------------------------------------
|
michaelx_krau | 1342185 | 2006-07-05 20:41:25 +0000 | [diff] [blame] | 100 | The EDK II is being managed by the Subversion Source Control on Tianocore.org.
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 101 | Subversion provides speed, security, and additional features. The
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 102 | recommended client is TortoiseSVN version 1.3.3.
|
| 103 | (Available at http://tortoisesvn.tigris.org/)
|
| 104 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 105 | The checkout procedures on the Tianocore.org Web site include
|
| 106 | instructions for the use of Subversion Source Control.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 107 |
|
michaelx_krau | 1342185 | 2006-07-05 20:41:25 +0000 | [diff] [blame] | 108 | The URL of the EDK II repository is:
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 109 | https://edk2.tianocore.org/svn/edk2/trunk/edk2
|
| 110 |
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 111 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 112 | --------------------------------------------------------------------
|
| 113 | Notes On Required Tools (With examples for Windows, OS X, and Linux*)
|
| 114 | --------------------------------------------------------------------
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 115 | Software Installation Order:
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 116 | After installing the compiler tools and your Subversion client, install the
|
| 117 | following required tools in this order:
|
| 118 | 1. Java JDK
|
| 119 | 2. Apache-Ant
|
| 120 | 3. ant-contrib
|
| 121 | 4. xmlbeans
|
| 122 | 5. saxon8
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 123 |
|
| 124 | Java Development Kit:
|
| 125 |
|
| 126 | The Java Environment Variable must be set before attempting to build.
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 127 | For Sun JDK (see note below):
|
bbahnsen | 6132429 | 2006-07-07 23:39:10 +0000 | [diff] [blame] | 128 | set JAVA_HOME=c:\Java\jdk1.5.0_06 (Windows example)
|
| 129 | export JAVA_HOME=/Library/Java/Home/ (OS X example)
|
| 130 | export JAVA_HOME=/usr/lib/j2sdk1.5-sun/ (Linux example)
|
| 131 | For Bea Systems:
|
yshi8 | 782eb16 | 2006-07-07 09:38:58 +0000 | [diff] [blame] | 132 | set JAVA_HOME=c:\Java\jrockit-R26.0.0-jdk1.5.0_04
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 133 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 134 | When using the Sun JDK5.0:
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 135 | During installation, you should specify the install directory as C:\Java
|
| 136 | instead of C:\Program Files\(or some other drive letter.) While installing
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 137 | to this non-standard location is not required, in practice, it seems to work
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 138 | more reliably.
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 139 | For the JDK, the install path is C:\Java\jdk1.5.0_06
|
| 140 | For the JRE, the install path is C:\Java\jre1.5.0_06
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 141 | Alternatively, you can specify C:\sunjavajdk and C:\sunjavajre.
|
lhauch | 01d2ed5 | 2006-04-27 15:09:06 +0000 | [diff] [blame] | 142 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 143 | NOTE: You cannot combine the location for the JDK and the JRE, because the
|
| 144 | JRE install removes most of the binaries and libraries installed by the JDK
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 145 | install.
|
| 146 |
|
| 147 | Java Tools:
|
| 148 | The Apache-ANT requires the ANT_HOME environment variable to be set before
|
| 149 | attempting to build:
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 150 | set ANT_HOME=c:\<full path to where ant was installed>
|
bbahnsen | 6132429 | 2006-07-07 23:39:10 +0000 | [diff] [blame] | 151 | export ANT_HOME=~/ExternalTools/apache-ant (OS X and Linux example)
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 152 |
|
| 153 | The ant-contrib.jar file should be installed in the %ANT_HOME%\lib
|
| 154 | directory.
|
| 155 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 156 | XMLBeans, requires the XMLBEANS_HOME environment variable to be set
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 157 | before attempting to build:
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 158 | set XMLBEANS_HOME=C:\<full path to where xmlbeans was installed>
|
bbahnsen | 6132429 | 2006-07-07 23:39:10 +0000 | [diff] [blame] | 159 | export XMLBEANS_HOME=~/ExternalTools/xmlbeans (OS X and Linux example)
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 160 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 161 | Copy the saxon8.jar file to the %XMLBEANS_HOME%\lib directory.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 162 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 163 | The Ant and XMLBean tools must be in the path.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 164 | MS system example:
|
| 165 | set PATH=%PATH%;%ANT_HOME%\bin;%XMLBEANS_HOME%\bin
|
| 166 | Linux/OS X bash shell example:
|
| 167 | export PATH=$PATH:${ANT_HOME}/bin:${XMLBEANS_HOME}/bin
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 168 |
|
| 169 | --------------------
|
| 170 | A Word on Apache-ANT
|
| 171 | --------------------
|
| 172 | The Apache-ANT program is a build tool that uses XML-based project files.
|
| 173 | Similar to Makefiles, these project files may contain multiple targets. Most
|
| 174 | build.xml files in EDK II are auto-generated; any edits performed on the
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 175 | build.xml files will be overwritten by the next build.
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 176 |
|
| 177 | Pre-defined targets in the build.xml file include:
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 178 | all - This target builds binaries for defined architectures.
|
| 179 | clean - This target removes object files generated by commands.
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 180 | cleanall - This target removes all generated files and directories.
|
| 181 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 182 | ----------------------------
|
| 183 | A Word on the GCC Tool Chain
|
| 184 | ----------------------------
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 185 | EDK II will not compile with a standard Linux gcc tool chain. While Linux
|
| 186 | distributions are usually based on ELF, EDK II requires a version of gcc
|
| 187 | that is configured to produce PE-COFF images. You will find a script in
|
| 188 | edk2/Tools/gcc that will download, configure, compile, and install a gcc
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 189 | 4.X cross-compile tool chain for EDK II development. This custom tool chain
|
| 190 | supports the IA-32 architecture. It can be built and run on Cygwin, Linux, and
|
| 191 | many other POSIX-compliant host operating environments. To compile the custom
|
| 192 | gcc tool chain, you need the following tools on your host computer: bash, gcc,
|
| 193 | gmake, curl (or wget).
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 194 |
|
bbahnsen | 6329bec | 2006-07-25 22:08:33 +0000 | [diff] [blame^] | 195 | Only the MdePkg and EdkModulePkg are currently supported by gcc builds. Other
|
| 196 | builds, such as the EdkNt32Pkg, will not compile with gcc.
|
| 197 |
|
| 198 | ----------------------------
|
| 199 | A Word on compiling on Linux
|
| 200 | ----------------------------
|
| 201 |
|
| 202 | In order to compile on Linux, you will need to have the e2fsprogs-dev package
|
| 203 | installed. Check your distribution for the rpm, deb or other package format.
|
| 204 | This package contains the uuid library and header that are used by some of the
|
| 205 | host tools.
|
| 206 |
|
| 207 | If you are running on x86_64 Linux, then you should install a 64 bit version of
|
| 208 | the Java JDK. The version that was used was jdk-1_5_0_07-linux-amd64-rpm.bin.
|
| 209 | It may be downloaded from sun.com.
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 210 |
|
| 211 | -----------------------
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 212 | Notes on Documentation
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 213 | -----------------------
|
| 214 | The documents are being managed by the Subversion Source Control on
|
| 215 | Tianocore.org. The document repository is "docs" and must be checked out
|
| 216 | separately from the EDK II source tree. Refer to the checkout procedures on
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 217 | the Tianocore.org Web site for EDK II.
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 218 |
|
| 219 | The URL of the document repository is:
|
| 220 | https://edk2.tianocore.org/svn/edk2/trunk/docs
|
| 221 |
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 222 |
|
| 223 | -------------------------------------------------------------------------------
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 224 | Quick Start
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 225 | -----------
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 226 | (assumes Microsoft Tools and OS environment, for GCC Tools or Linux, see
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 227 | "Detailed Starting Instructions" below)
|
| 228 |
|
| 229 | Follow the instructions at https://edk2.tianocore.org/servlets/ProjectSource to
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 230 | check out the entire EDK II source tree.
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 231 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 232 | In a command window, change to the top-level directory of the EDK II source.
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 233 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 234 | To test your tool chain setup and to build the supplied tools, execute:
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 235 | c:\MyWork\edkii\> edksetup ForceBuild
|
| 236 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 237 | (The edksetup script is referred to as the setup command throughout the
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 238 | rest of this document.)
|
| 239 | NOTE: You should run the setup command at the start of every session.
|
| 240 | This configures the environment to include the TianoTools and the
|
| 241 | Java applications and libraries.
|
| 242 |
|
| 243 | You will need to set the WORKSPACE environment variable, or run the edksetup
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 244 | script (without any arguments), any time you want to build.
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 245 |
|
| 246 | Set the WORKSPACE environment variable, e.g.:
|
| 247 |
|
| 248 | c:\> set WORKSPACE=C:\MyWork\edkii
|
| 249 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 250 | You may need to edit the text files Tools/Conf/target.txt and
|
| 251 | Tools/Conf/tools_def.txt (created by edksetup) using your favorite
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 252 | text editor to ensure that the paths to the tools you want to use
|
| 253 | to build EDK II binaries are correct. These files contain the default
|
| 254 | paths (as per the default installation of the tools), so a customized
|
| 255 | install may require this manual process.
|
| 256 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 257 | Once this is completed, you are ready to test the build, by executing:
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 258 | c:\MyWork\edkii\> build
|
| 259 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 260 | This command builds the active platform specified in text file target.txt. If
|
| 261 | the active platform is not specified target.txt, you must execute the build
|
| 262 | command from the sub-directory that contains FPD files. For more information
|
| 263 | about the active platform policy, see the EDK II Build and Packaging
|
| 264 | Architecture Specification.
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 265 |
|
| 266 | -------------------------------------------------------------------------------
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 267 | Detailed Starting Instructions
|
| 268 | ------------------------------
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 269 |
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 270 | Follow the instructions at https://edk2.tianocore.org/servlets/ProjectSource to
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 271 | check out the entire EDK II source tree.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 272 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 273 | In a command window, change to the top-level directory of the EDK II source.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 274 |
|
lhauch | 65a1d8a | 2006-07-12 06:40:42 +0000 | [diff] [blame] | 275 | If the active compiler tool chain is GCC, you must set the
|
| 276 | environment variable, TOOL_CHAIN to "gcc" before running the
|
| 277 | edksetup script. Example: export TOOL_CHAIN=gcc
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 278 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 279 | To test your tool chain setup and to build the supplied tools, execute:
|
lhauch | 65a1d8a | 2006-07-12 06:40:42 +0000 | [diff] [blame] | 280 | c:\MyWork\edkii\> edksetup ForceBuild
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 281 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 282 | On Linux systems, you must source the edksetup.sh file to load the correct
|
bbahnsen | 6132429 | 2006-07-07 23:39:10 +0000 | [diff] [blame] | 283 | settings into your shell.
|
| 284 |
|
| 285 | . edksetup.sh # Note the dot.
|
| 286 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 287 | The edksetup script is referred to as the setup command throughout the
|
| 288 | rest of this document.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 289 | NOTE: You should run the setup command at the start of every session.
|
| 290 | This configures the environment to include the TianoTools and the
|
| 291 | Java applications and libraries.
|
| 292 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 293 | Any changes to the tool source code or XML Schema documents require that
|
| 294 | you execute the following:
|
lhauch | 65a1d8a | 2006-07-12 06:40:42 +0000 | [diff] [blame] | 295 | c:\MyWork\edkii\> edksetup ForceBuild
|
| 296 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 297 | You must set the WORKSPACE environment variable, or run the edksetup
|
| 298 | script (without any arguments), any time you want to build.
|
lhauch | 65a1d8a | 2006-07-12 06:40:42 +0000 | [diff] [blame] | 299 |
|
| 300 | Set the WORKSPACE environment variable, e.g.:
|
| 301 |
|
| 302 | c:\> set WORKSPACE=C:\MyWork\edkii
|
| 303 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 304 | You may need to edit the text files Tools/Conf/target.txt and
|
| 305 | Tools/Conf/tools_def.txt (created by edksetup) using your favorite
|
michaelx_krau | dcfa7b1 | 2006-07-12 20:39:54 +0000 | [diff] [blame] | 306 | text editor to ensure that the paths to the tools you want to use
|
| 307 | to build EDK II binaries are correct. These files contain the default
|
| 308 | paths (as per the default installation of the tools), so a customized
|
| 309 | tool installation may require this manual process.
|
lhauch | a032fb4 | 2006-07-06 14:13:56 +0000 | [diff] [blame] | 310 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 311 | Once this is completed, you are ready to test the build, by executing:
|
lhauch | 65a1d8a | 2006-07-12 06:40:42 +0000 | [diff] [blame] | 312 | c:\MyWork\edkii\> build
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 313 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 314 | This command builds the active platform specified in text file target.txt. If
|
| 315 | the active platform is not specified, go to the sub-directory that contains FPD
|
| 316 | files and execute the build command. For more information about the active
|
| 317 | platform policy, see the EDK II Build and Packaging Architecture
|
| 318 | Specification.
|
bbahnsen | 90f7b6a | 2006-06-22 23:19:41 +0000 | [diff] [blame] | 319 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 320 | --------------------------
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 321 | Individual Platform Builds
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 322 | --------------------------
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 323 | After running the setup command, you can build individual platforms.
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 324 | In the command window:
|
| 325 | Set the active platform in target.txt, and execute this command:
|
| 326 | c:\<directory>\> build
|
| 327 | or
|
| 328 | cd to the platform (FPD file) that you want to build and execute this command:
|
lhauch | 65a1d8a | 2006-07-12 06:40:42 +0000 | [diff] [blame] | 329 | c:\MyWork\edkii\EdkNt32Pkg\> build
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 330 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 331 | Note that the active platform specified in target.txt overrides the platform
|
| 332 | specified by any FPD file in the current directory. For more information
|
| 333 | about active platform policy, see the EDK II Build and Packaging Architecture
|
| 334 | Specification.
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 335 |
|
lhauch | 70edbc3 | 2006-07-14 06:46:15 +0000 | [diff] [blame] | 336 | To run the Nt32 emulation platform under Microsoft Windows, go to
|
| 337 | <full build path>\DEBUG\MSFT\IA32 and execute SecMain.exe
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 338 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 339 | To exit the Nt32 emulation platform, type reset at the EFI Shell>
|
| 340 | command prompt. Alternatively, from the graphical interface, select the Boot
|
| 341 | Maintenance Manager's Reset System command.
|
| 342 |
|
michaelx_krau | 020fa45 | 2006-07-18 16:31:13 +0000 | [diff] [blame] | 343 | NOTE: When creating a new platform, the Platform Name is restricted
|
| 344 | to a single word containing alphanumeric characters, underscore, dash,
|
| 345 | and period. The space character and other special characters are
|
| 346 | not allowed.
|
lhauch | 70edbc3 | 2006-07-14 06:46:15 +0000 | [diff] [blame] | 347 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 348 | -----------------------
|
| 349 | Notes on Symbolic Debug
|
| 350 | -----------------------
|
| 351 | To enable EFI Symbolic Debugging, make sure the target output is set to DEBUG
|
| 352 | in the text file Tools/Conf/target.txt and then modify the FPD <BuildOptions>
|
| 353 | <Options><Option BuildTargets="DEBUG" ToolCode="CC"> and append the following
|
| 354 | compiler options to the string:
|
| 355 | "/D EFI_GENERATE_SYM_FILE", "/D EFI_SYMBOLIC_DEBUG"
|
| 356 |
|
| 357 | (If the Option line does not contain "/D EFI_DEBUG", you must add that
|
| 358 | option as well.)
|
lhauch | 03fed93 | 2006-05-24 19:51:36 +0000 | [diff] [blame] | 359 |
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 360 | ------------------------
|
| 361 | Individual Module Builds
|
| 362 | ------------------------
|
| 363 | After running the setup command, you can build individual modules.
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 364 | In the command window, cd to the module that you want to build, and
|
| 365 | execute the build command:
|
lhauch | 65a1d8a | 2006-07-12 06:40:42 +0000 | [diff] [blame] | 366 | c:\MyWork\edkii\MdePkg\Library\BaseLib\> build
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 367 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 368 | You must set the active platform in target.txt for individual module builds.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 369 |
|
| 370 | -------------------------------------------------------------------------------
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 371 |
|
| 372 | General Information:
|
| 373 | ===============================================================
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 374 | Mechanisms
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 375 | ----------
|
bbahnsen | 8fb9e6b | 2006-05-03 22:45:39 +0000 | [diff] [blame] | 376 | A brief overview:
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 377 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 378 | A) The Surface Area Package Description (SPD) file contains information about
|
| 379 | the modules that the package contains, including the location of all MSA files,
|
| 380 | and public library names and headers that might be provided by a module in the
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 381 | package. Packages are defined by SPD files. (Found in the root of the Package
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 382 | subdirectory (i.e. EdkNt32Pkg).) The SPD file is further explained in EDK II
|
| 383 | Build and Packaging Architecture Specification.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 384 |
|
| 385 | B) Module Surface Area Definition (MSA) files. A description of a module's
|
| 386 | surface area, with all module specific default flags and features specified.
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 387 | For additional details, see the "EDK II Module Surface Area Specification" and
|
| 388 | the "EDK II Build and Packaging Architecture Specification."
|
lhauch | a032fb4 | 2006-07-06 14:13:56 +0000 | [diff] [blame] | 389 |
|
| 390 | C) Framework Platform Description (FPD) files. A description of a platform's
|
| 391 | surface are, including a list of modules that are needed by the platform. To
|
| 392 | support individual module builds, developers are not required to provide
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 393 | information about specific flash devices, nor flash device layout.
|
| 394 | Specific sections in the FPD file control aspects of the build, such
|
lhauch | a032fb4 | 2006-07-06 14:13:56 +0000 | [diff] [blame] | 395 | as the Supported Architectures and Build Targets, as well as the tool flags
|
| 396 | that are used to create the binary files. A valid platform file can specify
|
| 397 | zero or more modules, so individual modules can be compiled within the context
|
| 398 | of a platform (FPD) definition.
|
| 399 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 400 | D) Platform Configuration Database (PCD). A platform database that contains a
|
| 401 | variety of current platform settings or directives that can be accessed by a
|
| 402 | driver or application. The PCD is defined by the PCD_Protocol (This is
|
| 403 | further explained in the "EDK II Platform Configuration Database Infrastructure
|
| 404 | Description."
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 405 |
|
lhauch | a032fb4 | 2006-07-06 14:13:56 +0000 | [diff] [blame] | 406 | E) Library Class. A library class is a logical grouping of similar functions.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 407 | When developing components, the module surface area declares the class of
|
lhauch | a032fb4 | 2006-07-06 14:13:56 +0000 | [diff] [blame] | 408 | libraries that can be used by the component. The MSA and SPD files can specify
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 409 | a recommended instance of the library that a platform integrator (PI) may
|
| 410 | select, however this is only a recommendation. The PI may choose to select a
|
| 411 | different library instance to be used during compilation and linking. All
|
| 412 | library type modules must include header files in their distribution package,
|
| 413 | as well as their MSA files. Components, on the other hand, need provide only an
|
| 414 | MSA file and either source or binary files when distributing packages. The
|
| 415 | Library Classes are further explained in the "EDK II Build and Packaging
|
| 416 | Architecture Specification."
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 417 |
|
| 418 | =========================================================================
|
| 419 | The common operations by developers of new modules are:
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 420 | -----------------------------------------------
|
| 421 | 1) Manually creating a new module in a package:
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 422 | - The module source code must first be created in an appropriate directory
|
| 423 | (under the package the module is to be a part of.)
|
| 424 | - An MSA file must be created, spelling out all aspects of the module.
|
| 425 | - The MSA must be added to the SPD for the package to include the module.
|
| 426 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 427 | -----------------------------------------------------
|
| 428 | 2) Adding and Removing modules to and from a package:
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 429 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 430 | - Set up environment as Build
|
| 431 | - Adding a module to a package:
|
| 432 | - Generate the MSA file
|
| 433 | - Add a new <Filename> element under <MsaFiles> into
|
| 434 | <PackageDir>\<PackageName>.spd, using arelative path to the package
|
| 435 | - Add a new <ModuleSA> entry under each <FrameworkModules> into the
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 436 | <PackageDir>\<PackageName>.fpd file if necessary.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 437 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 438 | - Removing a module from a package:
|
| 439 | - Comment out or remove the corresponding <Filename> element under
|
| 440 | <MsaFiles> from <PackageDir>\<PackageName>.spd
|
| 441 | - Comment out or remove the corresponding <ModuleSA> entry under each
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 442 | <FrameworkModules> from <PackageDir>\<PackageName>.fpd if necessary.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 443 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 444 | -------------------------------
|
| 445 | 3) Manually creating a package:
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 446 | - Identify the modules that are to be members of the project.
|
| 447 | - Identify the Variables and Guids required in and of the Package (including
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 448 | consumption and production information).
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 449 | - Create an SPD file defining these modules and calling out their MSA files.
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 450 | - Add a new <Filename> element under <PackageList> into
|
| 451 | Tools\Conf\FrameworkDatabase.db, using the relative path to the workspace.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 452 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 453 | -----------------------------------------
|
| 454 | 4) Declaring a new Protocol in a package:
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 455 | - This release requires manual editing of the SPD file, adding the protocol
|
| 456 | to the ProtocolDeclarations section of the file.
|
| 457 | - Add the Protocol .h file to the Include\Protocol directory.
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 458 | - Add an <Entry> to the <ProtocolDeclarations> element in the
|
| 459 | <PackageName>.spd file
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 460 | - Each line contains Protocol base name, followed by the global variable
|
| 461 | name, and the hex value of the Protocol GUID.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 462 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 463 | Example Protocol Entries (NOTE: The Guid entry is a single line in the SPD
|
| 464 | file):
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 465 | <ProtocolDeclarations>
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 466 | <Entry Name="Bds">
|
| 467 | <C_Name>gEfiBdsArchProtocolGuid</C_Name>
|
| 468 | <GuidValue>665E3FF6-46CC-11D4-9A38-0090273FC14D</GuidValue>
|
| 469 | <HelpText/>
|
| 470 | </Entry>
|
| 471 | <Entry Name="Cpu">
|
| 472 | <C_Name>gEfiCpuArchProtocolGuid</C_Name>
|
| 473 | <GuidValue>26BACCB1-6F42-11D4-BCE7-0080C73C8881</GuidValue>
|
| 474 | <HelpText/>
|
| 475 | </Entry>
|
| 476 | </ProtocolDeclarations>
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 477 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 478 | ------------------------------------
|
| 479 | 5) Declaring a new PPI in a package:
|
| 480 | - This release requires manual editing of the SPD file
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 481 | - Add the PPI .h file to the Include\Ppi directory.
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 482 | - Add an <Entry> to the package <PpiDeclarations> element in the
|
| 483 | <PackageName>.spd file
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 484 | - Each line contains the PPI base name, followed by the global variable
|
| 485 | name and the hex value of the PPI GUID.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 486 |
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 487 | Example Ppi Entries (NOTE: The Guid entry is a single line in the SPD file):
|
| 488 | <PpiDeclarations>
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 489 | <Entry Name="BootInRecoveryMode">
|
| 490 | <C_Name>gEfiPeiBootInRecoveryModePpiGuid</C_Name>
|
| 491 | <GuidValue>17EE496A-D8E4-4B9A-94D1-CE8272300850</GuidValue>
|
| 492 | <HelpText/>
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 493 | </Entry>
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 494 | <Entry Name="CpuIo">
|
| 495 | <C_Name>gEfiPeiCpuIoPpiInServiceTableGuid</C_Name>
|
| 496 | <GuidValue>E6AF1F7B-FC3F-46DA-A828-A3B457A44282</GuidValue>
|
| 497 | <HelpText/>
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 498 | </Entry>
|
| 499 | </PpiDeclarations>
|
| 500 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 501 | -------------------------------------
|
| 502 | 6) Declaring a new GUID in a package:
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 503 | - This release requires manual editing of the SPD file to include the new
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 504 | Guid. This is identical to adding a ProtocolDeclaration or PpiDeclaration
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 505 | element, as described above.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 506 |
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 507 | ------------------------------------------
|
| 508 | 7) Declaring a new PCD entry in a package:
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 509 | - This release requires manual editing of the SPD file to include the new
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 510 | PCD. New Pcd entries are added to the PcdDefinitions section of the
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 511 | <PackageName>.spd file using the following example for the format
|
| 512 | (NOTE: The hex <Token> value must be unique):
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 513 |
|
klu2 | 54c9f9e | 2006-07-07 06:19:08 +0000 | [diff] [blame] | 514 | <PcdDeclarations>
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 515 | <PcdEntry ItemType="FIXED_AT_BUILD">
|
| 516 | <C_Name>PcdMaximumUnicodeStringLength</C_Name>
|
| 517 | <Token>0x00000001</Token>
|
klu2 | 54c9f9e | 2006-07-07 06:19:08 +0000 | [diff] [blame] | 518 | <TokenSpaceGuidCName>gEfiMdePkgTokenSpaceGuid</TokenSpaceGuidCName>
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 519 | <DatumType>UINT32</DatumType>
|
klu2 | 54c9f9e | 2006-07-07 06:19:08 +0000 | [diff] [blame] | 520 | <ValidUsage>FIXED_AT_BUILD</ValidUsage>
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 521 | <DefaultValue>1000000</DefaultValue>
|
klu2 | 54c9f9e | 2006-07-07 06:19:08 +0000 | [diff] [blame] | 522 | <HelpText>The maximum lengh for unicode string.</HelpText>
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 523 | </PcdEntry>
|
klu2 | 54c9f9e | 2006-07-07 06:19:08 +0000 | [diff] [blame] | 524 | </PcdDeclarations>
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 525 |
|
| 526 | ------------------------------
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 527 | 8) Declaring a new Library Class:
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 528 | - This release requires manual editing of the SPD file to include the new
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 529 | Library Class. New Library Class entries are added to the
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 530 | LibraryClassDeclarations section of the <PackageName>.spd file using
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 531 | the following example for the format:
|
| 532 |
|
| 533 | <LibraryClassDeclarations>
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 534 | <LibraryClass Name="BaseLib">
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 535 | <IncludeHeader>Include/Library/BaseLib.h</IncludeHeader>
|
wuyizhong | e3f236c | 2006-07-06 07:22:25 +0000 | [diff] [blame] | 536 | <HelpText/>
|
| 537 | </LibraryClass>
|
| 538 | <LibraryClass Name="BaseMemoryLib">
|
| 539 | <IncludeHeader>Include/Library/BaseMemoryLib.h</IncludeHeader>
|
| 540 | <HelpText/>
|
| 541 | </LibraryClass>
|
lhauch | 64fcaea | 2006-04-27 22:47:57 +0000 | [diff] [blame] | 542 | </LibraryClassDeclarations>
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 543 |
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 544 | =======================================================
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 545 | EDK II Changes Relative to the original EDK:
|
| 546 | --------------------------------------------
|
michaelx_krau | 1342185 | 2006-07-05 20:41:25 +0000 | [diff] [blame] | 547 | The EDK II represents significant changes in the structure of the EDK.
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 548 | Therefore, it is very difficult to isolate all of the changes of this version of
|
| 549 | the EDK with the original EDK.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 550 |
|
| 551 | Of particular note:
|
| 552 |
|
michaelx_krau | 1342185 | 2006-07-05 20:41:25 +0000 | [diff] [blame] | 553 | 1) EDK II contains new hardware feature support for the ICH SMBUS Libraries.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 554 | These libraries are provided to make Memory Reference Code (MRC) development
|
| 555 | easier.
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 556 | 2) The MDE libraries represent significant changes in source
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 557 | (with only limited changes in functionality.) These new libraries conform
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 558 | to the "EDK II Module Development Environment Library Specification.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 559 | 3) The Fat Binary and the EDK Shell Binary Packages are functionally identical
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 560 | to the original EDK.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 561 | 4) The EDK tools directory has been expanded to include more tools and more
|
| 562 | tool functionality.
|
| 563 | 5) The EDK NT32 section has been ported to the new build process, but
|
michaelx_krau | 561e4a7 | 2006-07-13 18:37:28 +0000 | [diff] [blame] | 564 | functionally remains the same as the original EDK.
|
michaelx_krau | 1342185 | 2006-07-05 20:41:25 +0000 | [diff] [blame] | 565 | 6) The Application "HelloWorld" has been ported to EDK II as well.
|
lhauch | aa0bf4f | 2006-04-26 17:54:57 +0000 | [diff] [blame] | 566 |
|
| 567 | =======================================================
|
| 568 | Virus scanned by McAfee VirusScan Enterprise 8.0.0, Virus Definitions 4718, no
|
| 569 | virus detected.
|
| 570 |
|