From 0d2711a69397d2971079121df4326d84736c181e Mon Sep 17 00:00:00 2001 From: lgao4 Date: Sat, 29 Oct 2011 06:59:30 +0000 Subject: Sync BaseTools Trunk (version r2387) to EDKII main trunk. Signed-off-by: lgao4 Reviewed-by: gikidy git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12602 6f19259b-4bc3-4df7-8a09-765794883524 --- BaseTools/Conf/XMLSchema/DistributionPackage.xsd | 5742 +++++++++++----------- BaseTools/Conf/build_rule.template | 2 +- BaseTools/Conf/tools_def.template | 8 +- 3 files changed, 2877 insertions(+), 2875 deletions(-) (limited to 'BaseTools/Conf') diff --git a/BaseTools/Conf/XMLSchema/DistributionPackage.xsd b/BaseTools/Conf/XMLSchema/DistributionPackage.xsd index 1d3c690441..8f136ae04e 100644 --- a/BaseTools/Conf/XMLSchema/DistributionPackage.xsd +++ b/BaseTools/Conf/XMLSchema/DistributionPackage.xsd @@ -12,2876 +12,2876 @@ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. --> - - - - This schema defines the UEFI/PI - Distribution Package description (PKG) file. It describes the content - of: - 1) Package descriptions with - definitions and headers. - 2) Modules in either source or binary - format. (Note that Binary format is for FFS leaf section file types - only, complete FFS files cannot be distributed using this distribution - format.) - 3) The distribution of custom tools - used to modify the binary images to create UEFI/PI compliant images. - 4) Finally, it can be used to - distribute other miscellaneous content that is not specific to UEFI/PI - images. - The Package Surface Area describes the - content of packages, while the Module Surface Area provides information - relevant to source and/or binary distributions. - - - - - - This header contains (legal) - information usually required for distributing both binary and/or - source code. - - - - - The list of packages in this - distribution. - Packages are groups of files - and/or modules that are similar in nature. - Packages are uniquely identified - by a package GUID and a package version. - A package can declare public - mappings of C names to GUID values. - A package can provide header - files for library classes and/or other industry standard - definitions. - A package can also declare - public mappings of platform configuration database (PCD) - "knobs" to control features and operation of - modules within a platform. - Finally, a package lists the - library instances and/or modules that are provided in a - distribution package. - - - - - The listing of UEFI/PI compliant - modules in this distribution that are NOT part of a Package. Every - module that is provided as part of a package needs to be described - in a PackageSurfaceArea.Modules section. - The ModuleSurfaceArea section - describes how each module in a distribution is coded, or, in the - case of a binary module distribution, how it was built. - UEFI/PI compliant libraries and - modules are uniquely identified by the Module's GUID and version - number. - This section will typically be - used for modules that don't require any additional files that - would be included in a package. For example, the Enhanced FAT - driver binary does not need to have a package description, as no - additional files are provided. - - - - - This section is for distributing - vendor specific executable tools, tool source code and/or - configuration files. These tools are primarily for manipulating - code and/or binary images. - Tools in this section - can: - 1) Parse build meta-data files - to create source code files and build scripts. - 2) Modify image files to conform - to UEFI/PI specifications. - 3) Generate binary files from - certain types of text/unicode files. - 4) Generate PCI Option Roms or - Firmware Device images. - 5) Implement external - encoding/decoding/signature/GUIDed tools. - 6) Distribution Package - create/install/remove tools. - - - - - The list of miscellaneous files - in this distribution. Any files that are not listed in either the - Package, Module or Tools sections can be listed here. This section - can be used to distribute specifications for packages and modules - that are not "industry standards" such as a - specification for a chipset or a video device. - - - - - The UserExtensions section is - used to disseminate processing instructions that may be custom to - the content provided by the distribution. This section contains - information that is common to all aspects of this disribution. - - - - - - - - - - - - This section defines the content of - the UEIF/PI compliant Distribution Package Header. This is the only - required element of a UEFI/PI compliant distribution package. - - - - - - - This is the User Interface Name - for this Distribution Package. - Each Distribution Package is - uniquely identified by it's GUID and Version number. - - - - - - - - The reference name of - the Distribution Package file. This single word name can - be used by tools as a keyword or for directory and/or file - creation. - White space and special - characters (dash and underscore characters may be used) - are not permitted in this name. - - - - - - - - - This 128-bit GUID and the - Version attribute uniquely identify this Distribution Package. - Backward compatible releases of - a distribution package need only change the version number, while - non-backward compatible changes require the GUID to change - (resetting the version number to 1.0 is optional.) - - - - - - - - This value, along with - the GUID, is used to uniquely identify this object. The - higher the number, the more recent the content. - - - - - - - - - - A string identifying who created - this distribution package. - - - - - The date and time this - distribution was created. The format is: YYYY-MM-DDThh:mm:ss, for - example: 2001-01-31T13:30:00 (note the T character separator - between the calendar date and the time. - - - - - The copyright for this file that - is generated by the creator of the distribution. If a derivative - work is generated from an existing distribution, then the existing - copyright must be maintained, and additional copyrights may be - appended to the end of this element. It may also be the primary - copyright for all code provided in the Distribution Package. - - - - - - A license that describes any - restrictions on the use of this distribution. If a derivative work - is allowed by the original license and a derivative work is - generated from an existing distribution, then the existing license - must be maintained, and additional licenses may be appended to the - end of this element. It may also be the primary license for all - code provided in the distribution file. Alternatively, this may - point to a filename that contains the License. The file (included - in the content zip file) will be stored in the same location as - the distribution package's .pkg file. - - - - - A one line description of the - Distribution Package. - - - - - A complete description of the - Distribution Package. This description may include the release - name of the file, the version of the file, and a complete - description of the file contents and/or features including a - description of the updates since the previous file release. - - - - - - The packaging utilities will use this - MD5 sum value of the included ZIP file containing files and/or code. If - this element is not present, then installation tools should assume that - the content is correct, or that other methods may be needed to verify - content. - - - - - This version of this XML Schema is 1.1 - Changes to 1.1 from 1.0 - #1 Updated to present date and new - version which is important to reflect the present state of the - matter - #2 Added definition/enumeration of - UNDEFIND type 2 is important since there is a large body of legacy code - for which the GUID’s and other code/data objects were not decorated with - their usage. This document will allow for importing today’s source - artifacts and producing decorations using the ‘Undefined’ versus having - an error - #3 Allow for inclusion of ARM and future - architecture types - - - - - - If set to true, all content within - this Distribution Package should NOT be modified. The default - permits modification of all content. - - - - - If set to true, then the content - can be repackaged into another distribution package. The default - prohibits repackaging the Distribution content. - - - - - - - - - A package is a collection of related - objects - Includes, Libraries and Modules. - Each package is uniquely identified by - it's GUID and Version number. Backward compatible releases of a package - need only change the version number, while non-backward compatible - changes require the GUID to change (resetting the version number to 1.0 - is optional.) - - - - - - - - - - This is the User Interface - Name for this package. - - - - - - - This is a single - word BaseName of the package. This BaseName can be - used by tools as a keyword and for directory/file - creation. - - - - - - - - - This GUID and the Version - attribute uniquely identify a given package. - - - - - - - - This value, along - with the GUID, is used to uniquely identify this - object. - Backward - compatible changes must make sure this number is - incremented from the most recent version. - Non-backward compatible changes require a new GUID, - and the version can be reset. - - - - - - - - - If the package requires a - different copyright than the distribution package, this - element can list one or more copyright lines. - - - - - - If the package requires - licenses that are different from the distribution package - license, this element can contain one or more license text - paragraphs (or license filenames.) - - - - - A one line description of - this package. - - - - - A complete description of - a package. This description may include the release name of - the package, the version of the package, and a complete - description of the package contents and/or features - including a description of the updates since the previous - package’s release. - - - - - This element is the - location (in the ZIP file) for the root directory of a - package. - - - - - - - - - - The term cloned is used here to - indicate that this package as been copied and modified to a - completely different package. An example might be for a new - generation of chipsets that have few or no elements in common with - the original. - - - - - - This GUID and the Version - attribute uniquely identify the Package that this Package - was copied from. - - - - - - - This value, along - with the GUID, is used to uniquely identify the - package that this package was cloned from. - - - - - - - - - - - - - - - Library Classes are public - interfaces that can be used by modules. One or more library - instances can implement a library class, however only one library - instance can be linked to an individual module. This provides the - platform integrator with the flexibility of choosing one library - instance's implementation over a different library instance. - - - - - - - - - - The header file - provides definitions and function prototypes for a - library class. Modules can be coded against these - functions, using the definitions in this header, - without concerning themselves about the libraries' - implementation details. This is a PackagePath relative - path and filename for the include file. - - - - - - - - - This GUID and - the Version attribute uniquely identify the - Recommended Library Instance. - - - - - - - - This - value, along with the GUID, is used to - uniquely identify this object. If this - value is not specified, then any version - of the library instance is recommended. - - - - - - - - - - - - - - - The single word name - of the Library Class that module developers will use to - identify a library class dependency. - - - - - - - - - - - - - This section is used to list - header files for industry standards not under the auspices of - UEFI.org. For example, headers that contain definitions and data - structures for the USB specifications. - - - - - - - - - The package relative - path and filename (in the content zip file) of the - industry standard include file. - - - - - - - - - - - - - - All top level header files that - are included by a package that are not listed above. They cannot - be: - 1) Local to a module (module - specific.) - 2) An industry standard header. - 3) A library class header. - - - - - - - - - - This is the Package - relative path and filename location within the content - ZIP file. - - - - - - - - - - - - - - - - - - - - - - - - This section lists the - Module Surface Area for all modules provided with this - package. - - - - - - - - - - This section defines the mapping - of GUID C names to GUID values as a Registry Format GUID. - Modules that use these GUIDs - must specify their dependency on this package. - - - - - - Individual GUID - Declarations - - - - - - - - - - - - - - - - - - - - This section defines the mapping - of Protocol C names to GUID values as a Registry Format GUID. - Modules that use these Protocols - must specify their dependency on this package. - - - - - - Individual Protocol - Declarations - - - - - - - - - - - - - - - - - - - This section defines the mapping - of Ppi C names to GUID values as a Registry Format GUID. - Modules that use these Ppis must - specify their dependency on this package. - - - - - - Individual PPI - Declarations - - - - - - - - - - - - - - - - - - - This section is used to declare - platform configuration knobs that are defined by this package. - Modules that use these PCD - values must specify their dependency on this package. - - - - - - - - - - Specifies the C name - of the Token Space GUID of which this PCD Entry is a - member. This C name should also be listed in the GUIDs - section, (specified above,) where the C name is - assigned to a GUID value. - - - - - Specifies the 32-bit - token value for this PCD Entry. The Token number must - be unique to the Token Space that declares the PCD. - The minLength of 3 - is required to handle the "0x" prefix to the hex - number. - - - - - - - - - - - - A string that - contains the data type of this PCD Entry. PCD data - types are restricted to the following set:UINT8, - UINT16, UINT32, UINT64, VOID*, BOOLEAN. - - - - - - A string that - contains one or more PCD Item types separated by - spaces. The PCD Item types are restricted to - FeaturePcd, FixedPcd, PatchPcd, Pcd and/or PcdEx. - - - - - - - This is a - recommended maximum data size for VOID* data types, - the actual value should be defined by the Platform - Integrator. It is not required for the other data - types. - The minLength of 3 - is required to handle the "0x" prefix to the hex - number. - - - - - - - - - - - - - Valid Error messages - that may be implemented in a module for the PCD Entry. - Only One Error Number per PcdError, (multiple - ErrorMessage entries are permitted) and multiple - PcdError elements are permitted. - - - - - - One of the - following types of comparisons, which must be - able to evaluate to either true or false. - - - - - The PCD - Value must be space separated list of values. - Values are restricted to the data type of this - PCD. - - - - - - - - - - - - The PCD must - be within a specifed range of numeric values. - Restricted to C style Relational, Equality and - Logicial Operators and parenthesis are valid. - Only the CName for this PCD is permitted in - the ValidValueRange expression. All other - values must be numeric. - LValue (op - RValue)+ - - - - - A in-fix - logical expression using C style logical - operators. - - - - - - A hexadecimal - value for the error message as defined by - specifications. - The minLength - of 3 is required to handle the "0x" prefix to - the hex number. - - - - - - - - - - - This string - should be defined by specifications. There are - pre-defined error number ranges in the UEFI/PI - specificaiton. - - - - - - - - - - - - - - - - - - - - - - - - This section is used to describe - any PCD interdependencies or relationships. - - - - - - This entry must used - TokenSpaceGuidCName.PcdCname for every named PCD. Restricted - to Relational, Equality and Logical Operators (NOT, AND, OR, - GT, GE, EQ, LE, LT and XOR) and parenthesis are valid. Only - the TokenSpaceGuidCName.PcdCname us permitted to name PCDs - in the expression. All other values must be numeric. - LValue (op RValue)+ - - - - - - - - - - This section contains files that - are not part of the code distributed with this package. - - - - - - - Only required if different - from the Package Copyright. - - - - - Only required if different - from the Package License. - - - - - A one line description of - this section's content. - - - - - A complete description of - the files in this section. - - - - - This is the PackagePath - relative path and filename location within the ZIP file. - - - - - - - - If true, used by - installation tools to ensure that a file that must - be executable has the correct properties to permit - execution. - - - - - - - - - - - - - - - This section is used for any - processing instructions that may be custom to the content provided - by this package that are common to this package. - - - - - - - - - This is a single word - identifier for grouping similar content that does not fit into - previously defined sections or other sections of the - Distribution. - - - - - This can be used to - differentiate multiple sections with a grouping. - For example, a PRE_PROCESS - Identifier might indicate specific steps and tools required - before processing module content, while a different - UserExtensions section with a POST_PROCESS Identifier might - describe steps that need to be executed after operations on - the modules in this package. - - - - - - - - - - - - - - - Each module is uniquely identified by - it's GUID and Version number. Backward compatible releases of a module - need only change the version number, while non-backward compatible - changes require the GUID to change (resetting the version number to 1.0 - is optional.) - - - - - - - - - - This is the User Interface - Name for this Module. - - - - - - - This is a single - word BaseName that will be used to create a module - meta-data file. - This name should - also be used to create output file names and - directories. - - - - - - - - - This GUID and the Version - attribute uniquely identify a given Module. - - - - - - - - This value, along - with the GUID, is used to uniquely identify this - object. - Backward - compatible changes must make sure this number is - incremented from the most recent version. - Non-backward compatible changes require a new GUID, - and the version can be reset. - - - - - - - - - This is only required if - the Copyright is different from either the Package or - Distribution copyright. Multiple copyright lines are - permitted within this section. - - - - - This is only required if - the license is different from either the Package or - Distribution license. Multiple licenses are permitted - within this section. - - - - - A brief text description - of the module. - - - - - A complete description of - the module contents and/or features including a description - of the updates since the previous module release. - - - - - - - - - - - List general information about a - module, including the Supported Architectures, this module's type, - specifications the module is coded against, and other - informational content. - - - - - - One of the Enumerated - module types that limit the use of a module. - - - - - - For stand-alone modules - that are NOT part of any package, this is the path to the - root of the module as listed in the ZIP file. For modules - included in a package, this is the location, relative to the - root of the package (PackagePath) this module belongs to. - - - - - - This element is only - required for the PEIM that produces the PCD PPI or the DXE - Driver that produces the PCD Protocol. - - - - - - - - - - - - - - - - This is a list of other - specifications that this module is written against. These - entries can be used in #define statements (depending on the - build system implementation, they may be autogenerated.) - - - - - - - - - - - - - - Different firmware - execution paths may be taken based on a given state of the - hardware, firmware, or through feature settings. A BootMode - may be declared (PRODUCES) or discovered (CONSUMES) based on - these states and feature settings. The supported boot modes - map to the PI specification Boot Modes. The boot modes - listed with Recovery are to indicate that the BootMode is - valid during a recovery boot. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The module - always supports the given boot modes. - - - - - - The module may - support a given mode on some execution paths. - - - - - - The module will - change the boot mode. - - - - - The module will - change the boot mode on some exection paths. - - - - - - The package - creator does not know how the boot mode is used. - - - - - - - - - - - - - - The functions that make up - the Event, Timer, and Task Priority Services are used during - preboot to create, close, signal, and wait for events; to - set timers; and to raise and restore task priority levels as - defined in the UEFI specification. GUIDed events should be - listed in the Guids section. - - - - - - - - - - - The module will - register a notification function and calls the - function when it is signaled. - - - - - The module will - register a notification function and calls the - function when it is signaled on some execution - paths. - - - - - The module will - signal all events in an event group. - - - - - - The module will - signal all events in an event group under some - execution paths. - - - - - The package - creator does not know how an event is used. - - - - - - - - - - - - - - - - - - - - - - - - - This is a list of - non-GUIDed Hand Off Blocks (HOBs) produced or consumed by - this module. - - - - - - - - - - - - - - - - - - - - - - - A HOB must be - present in the system. - - - - - If present, the - HOB will be used. - - - - - The HOB is - always produced by the module. - - - - - The HOB may be - produced by the module under some execution paths. - - - - - - The package - creator knows that a HOB is used, but does not - know how it is used. - - - - - - - - - - - - - - - - - - - - This section may be included for - Modules that are copied from a different module. - - - - - - - This GUID and the Version - attribute uniquely identify the Module that this Module was - copied from. - - - - - - - This value, along - with the GUID, is used to uniquely identify this - object. - - - - - - - - - - - - - - A list of the different Library - Classes consumed by a driver, core and/or application module, or - produced by a Library module. - - - - - - - - - Used by tools to - identify different instances of libraries that provide - the library class. This keyword identifies the library - class this module needs to be linked against. - - - - - - - - - This GUID and - the Version attribute uniquely identify the - recommended Library Instance for this module . - - - - - - - - This - value, along with the GUID, is used to - uniquely identify this object. - - - - - - - - - - - - - - - - Library instances - can provide code for a library class, or may require - other library instances themselves. Since different - execution paths in a library (or module) may need - different library classes based on some setting, - library classes may not alway be required. - - - - - - - - - - - - - - - A FeatureFlag - attribute must evaluate to either true or false - it may - be a fixed value of true or false, a C name or an in-fix - expression. - - - - - - - - - - - - - - - This is the module - relative (ModuleProperties.Path) path and filename location - within the ZIP file. - - - - - - - The Family - attribute is used to restrict usage to a given - family of compilers, such as GCC or MSFT. Since not - all code processing tools use the same syntax, - especially for assembly, this field can be used to - identify different syntax. - - - - - - - - - - - - - - - - - - - - - - This is the module - relative (ModuleProperties.Path) path and filename - location within the ZIP file. - - - - - - - - - Binary - file distribution is limited to UEFI/PI - FFS leaf section file types. - - - - - - - - A - UEFI/PI FFS Leaf section file type, not - a raw PE32 file. - - - - - - - - - - - - - - - - - - - - - - This section - contains information about how the module was coded, - such as Compiler Tools, Flags, PCDs (only PatchPcd - and/or PcdEx) and Library Class Instances used to - build the binary. - - - - - - - The element is - the Patchable PCD Value that was used during the - build. - - - - - - - - The - minLength of 3 is required to handle the - "0x" prefix to the hex number. - - - - - - - - - - - - - This - field is required if the Pcd Datum Type is - VOID* - The - minLength of 3 is required to handle the - "0x" prefix to the hex number. - - - - - - - - - - - - The - minLength of 3 is required to handle the - "0x" prefix to the hex number. - - - - - - - - - - - - Error - information implemented by the module. - - - - - - - The - minLength of 3 is required to handle the - "0x" prefix to the hex number. - - - - - - - - - - - - - - - - - - - - - - - - - - - The element is - the DynamicEx PCD Value that was used during the - build. - - - - - - - The - minLength of 3 is required to handle the - "0x" prefix to the hex number. - - - - - - - - - - - - - This - field is required if the Pcd Datum Type is - VOID* - - - - - - - - - - - - Error - information implemented by the module. - - - - - - - The - minLength of 3 is required to handle the - "0x" prefix to the hex number. - - - - - - - - - - - - - - - - - - - - - - - - - - - This is the - actual library instance that was used to link - against the module. - - - - - - This - GUID and the Version attribute uniquely - identify the actual Library Instance - linked in this module. - - - - - - - This - value, along with the GUID, is used to - uniquely identify this object. - - - - - - - - - - - - - - - - Any - description of OS, Tool, and flags for the - individual tool can go in this section. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - This GUID and the - Version attribute uniquely identify Package that this - Module depends on. - - - - - - - This value, - along with the GUID, is used to uniquely - identify this object. If the version attribute - is not specified, the most recent version of - the package can be used. - - - - - - - - - - - - - - - - - - - - - - - - - - Only valid for - Variable GUID types. - This can be either a Hex Array or - Unicode Data. - - - - - - - - - - The module does - not install the GUID, and the GUID must be present - for the module to execute. - - - - - The module does - not install the GUID, however, the GUID will be - used if it is present. - - - - - The module - always installs the GUID. - - - - - The Module will - install the GUID under certain execution paths. - - - - - - The package - creator knows that a GUID is used, but does not - know how it is used. - - - - - - - - - - - - - - - - - - A listing of protocols required - or produced by this module. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A listing of PPIs required or - produced by this module. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - These elements specify - additional information about the module. This area may be used by - tools to generate code. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - This section describes how a - platform is coded with respect to the platform configuration - knobs. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - This is the PEI dependency - expression for a Dependency Section. - - - - - - An in-fix expression, of C - identifiers and TRUE, FALSE, AND, OR, NOT, BEFORE, and AFTER - as well as parenthesis () in the in-fix notation. The - operators are restricted to grammar defined in the PI - specification. - - - - - - - - - - - This is the DXE dependency - expression for a Dependency Section. - - - - - - An in-fix expression, of C - identifiers and TRUE, FALSE, AND, OR, NOT, BEFORE, and AFTER - as well as parenthesis () in the in-fix notation. The - operators are restricted to grammar defined in the PI - specification. - - - - - - - - - - - This is the SMM dependency - expression for a Dependency Section. - - - - - - An in-fix expression, of C - identifiers and TRUE, FALSE, AND, OR, NOT, BEFORE, and AFTER - as well as parenthesis () in the in-fix notation. The - operators are restricted to grammar defined in the PI - specification. - - - - - - - - - - - - This section is used to provide - comments and/or list auxiliary files, such as pdb or map files. - - - - - - - - This is the path and - filename location within the ZIP file. - - - - - - - If true, used by - installation tools to ensure that a file that must - be executable has the correct properties to permit - execution. - - - - - - - - - - - - - - This section is used for any - processing instructions that may be custom to the content provided - by the distribution that are common to module. - The content is vendor specific. - The content can be plain text as - well as any user-defined, properly formatted XML structure. - - - - - - This is a single word - identifier for grouping similar content. For example, - ReferenceBuild might be used to identify non-PI compliant - build steps, with two different UserExtensions sections, one - with an Identifier of Prebuild, and another of PostBuild. Both - UserExtensions sections would use the same UserId. - - - - - - This can be any string used - to differentiate or identify this section from other - UserExtensions sections. - For example, a PRE_PROCESS - Identifier might indicate specific steps and tools required - before processing module content, while a different - UserExtensions section with a POST_PROCESS Identifier might - describe steps that need to be executed after operations on - this module. - - - - - - - - - - - This attribute is used when the - binaries are distributed for this module and no code generation from - source files is required. If set, then the BinaryFiles section - should be used, and any files listed in the SourceFiles section do - not have to be built. Additionally, the AsBuilt section for each - binary file must be included. - - - - - - - - - - - - - - - - This is the User Interface - Name for this Tools Distribution. - - - - - This is only required if - the Copyright is different from the Distribution Package - copyright. - - - - - This is only required if - the License is different from the Distribution Package - license. - - - - - This is only required if - the Abstract is different from the Distribution Package - Abstract. - - - - - This is only required if - the Description is different from the Distribution Package - Description. - - - - - - - - This is the path and filename - location within the ZIP file. - - - - - - - This is required for - tools that execute; it should not be used for - configuration files. - - - - - If true, used by - installation tools to ensure that a file that must be - executable has the correct properties to permit execution. - - - - - - - - - - - - - - - This section contains a list of files - that are not part of the code distributed with modules, packages or - tools. - - - - - - - - - The User interface name - for this content. - - - - - This is only required if - the Copyright is different from the Distribution Package - Copyright. - - - - - This is only required if - the License is different from the Distribution Package - License. - - - - - - - - - - This is the path and filename - location within the ZIP file. - - - - - - - If true, used by - installation tools to ensure that a file that must be - executable has the correct properties to permit execution. - - - - - - - - - - - - - - - - - - - - This is a single word identifier - for grouping similar content. For example, ReferenceBuild might be - used to identify non-PI compliant build steps, with two different - UserExtensions sections, one with an Identifier of Prebuild, and - another of PostBuild. Both UserExtensions sections would use the - same UserId. - - - - - This can be any string used to - differentiate or identify this section from other UserExtensions - sections. - For example, a PRE_PROCESS - Identifier might indicate specific steps and tools required before - processing distribution package content, while a different - UserExtensions section with a POST_PROCESS Identifier might describe - steps that need to be executed after operations on this content. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Any processor architecture not - listed above. The Architecture must be a target architecture of one - or more compiler tool chains. - - - - - - - - - - - - - Any other family of build - utilities for which compiler tools exist. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The following module types are defined - by specifications. - Module types for components and - libraries defined for this distribution mechanism. - - - - - Use of this module is not - restricted. - - - - - This module is only applicable to - the DXE core. - - - - - This module is only applicable to - a DXE driver. - - - - - This module is only applicable to - a DXE runtime driver. - - - - - This module is only applicable to - an IPF DXE runtime driver. - - - - - This module is only applicable to - a DXE SMM driver. - - - - - This module is only applicable to - the PEI core. - - - - - This module is only valid for PEI - modules. - - - - - This module is only applicable to - Security phase. - - - - - This module is only valid for UEFI - drivers. - - - - - This module is only valid for UEFI - runtime drivers. - - - - - This module is only valid for UEFI - applications. - - - - - This module is only applicable to the SMM - core. - - - - - This content is restricted to a specific - implementation. - - - - - This enumeration is for use in a list that - where the package creator does not know the what module types are supported - by a module. - - - - - This pattern has been added for use in a - module lists - for future expansion. - - - - - - - - The following data types are defined - by the PCD specification (or PCD section of the UEFI/PI specifications.) - - - - - - - - - - - - - - - - - - - - - The Feature PCD is a binary, - evaluating to either true or false. This is used during build to - include/exclude content. It can also be used during execution to - force execution paths within drivers, or to enable/disable features - within a driver for a given platform. - - - - - The Fixed PCD is a #define value - that is set at build time. - - - - - The Patch PCD is a #define that is - set at build time, and that can be modified within a binary file. - Additional information, such as the offset location of the value, - along with it's length may need to be provided. - - - - - This PCD type has an overloaded - definition. Prior to build, the platform integrator may choose to - implement a PCD as Fixed, Patchable or a Dynamic PCD. If the - platform integrator choose to use the PCD as dynamic, then a PCD - driver is required in the platform (PEI/DXE/both) to track the PCD - in some sort of 'database' of these items. For Dynamic PCDs, the - PcdGet* must pass in the token space guid and the token number to - retrieve data (PcdSet* also needs these values.) - - - - - The PCD can only be used as - Dynamic, and the platform firmware must contain a driver to maintain - a 'database' of these items. For Dynamic PCDs, the PcdGet* must pass - in the token space guid and the token number to retrieve data - (PcdSet* also needs these values.) - - - - - - - - - - A GUID must contain five different - Hexadecimal character sets that are separated by a dash (-) character. - - - - - - - - - - The EDK II build system supports - workstations running one of the following supported operating systems. - This is the OS for the developer's workstation, not the target platform. - - - - - - For Windows 2003, Windows XP and - Windows Vista. - - - - - For Windows 2003, Windows XP and - Windows Vista. - - - - - - - - - Typically, this is used for - Windows Batch files. - - - - - Typically use for shell scripts - - valid for any Linux and Mac OS/X. - - - - - + + + + This schema defines the UEFI/PI Distribution Package + description (PKG) file. It describes the content of: + 1) Package descriptions with definitions and + headers. + 2) Modules in either source or binary format. (Note + that Binary format is for FFS leaf section file types only, complete FFS files + cannot be distributed using this distribution format.) + 3) The distribution of custom tools used to modify + the binary images to create UEFI/PI compliant images. + 4) Finally, it can be used to distribute other + miscellaneous content that is not specific to UEFI/PI images. + The Package Surface Area describes the content of + packages, while the Module Surface Area provides information relevant to source + and/or binary distributions. + + + + + + This header contains (legal) information + usually required for distributing both binary and/or source code. + + + + + + The list of packages in this + distribution. + Packages are groups of files and/or + modules that are similar in nature. + Packages are uniquely identified by a + package GUID and a package version. + A package can declare public mappings of + C names to GUID values. + A package can provide header files for + library classes and/or other industry standard definitions. + A package can also declare public + mappings of platform configuration database (PCD) "knobs" to + control features and operation of modules within a platform. + Finally, a package lists the library + instances and/or modules that are provided in a distribution package. + + + + + + The listing of UEFI/PI compliant modules + in this distribution that are NOT part of a Package. Every module that + is provided as part of a package needs to be described in a + PackageSurfaceArea.Modules section. + The ModuleSurfaceArea section describes + how each module in a distribution is coded, or, in the case of a binary + module distribution, how it was built. + UEFI/PI compliant libraries and modules + are uniquely identified by the Module's GUID and version number. + This section will typically be used for + modules that don't require any additional files that would be included + in a package. For example, the Enhanced FAT driver binary does not need + to have a package description, as no additional files are provided. + + + + + + This section is for distributing vendor + specific executable tools, tool source code and/or configuration files. + These tools are primarily for manipulating code and/or binary images. + Tools in this section + can: + 1) Parse build meta-data files to create + source code files and build scripts. + 2) Modify image files to conform to + UEFI/PI specifications. + 3) Generate binary files from certain + types of text/unicode files. + 4) Generate PCI Option Roms or Firmware + Device images. + 5) Implement external + encoding/decoding/signature/GUIDed tools. + 6) Distribution Package + create/install/remove tools. + + + + + The list of miscellaneous files in this + distribution. Any files that are not listed in either the Package, + Module or Tools sections can be listed here. This section can be used to + distribute specifications for packages and modules that are not + "industry standards" such as a specification for a chipset or + a video device. + + + + + The UserExtensions section is used to + disseminate processing instructions that may be custom to the content + provided by the distribution. This section contains information that is + common to all aspects of this disribution. + + + + + + + + + + + This section defines the content of the UEIF/PI + compliant Distribution Package Header. This is the only required element of a + UEFI/PI compliant distribution package. + + + + + + This is the User Interface Name for this + Distribution Package. + Each Distribution Package is uniquely + identified by it's GUID and Version number. + + + + + + + The reference name of + the Distribution Package file. This single word name can + be used by tools as a keyword or for directory and/or + file creation. + White space and special + characters (dash and underscore characters may be used) + are not permitted in this name. + + + + + + + + + This 128-bit GUID and the Version + attribute uniquely identify this Distribution Package. + Backward compatible releases of a + distribution package need only change the version number, while + non-backward compatible changes require the GUID to change (resetting + the version number to 1.0 is optional.) + + + + + + + This value, along with + the GUID, is used to uniquely identify this object. The + higher the number, the more recent the content. + + + + + + + + + + A string identifying who created this + distribution package. + + + + + The date and time this distribution was + created. The format is: YYYY-MM-DDThh:mm:ss, for example: + 2001-01-31T13:30:00 (note the T character separator between the calendar + date and the time. + + + + + The copyright for this file that is + generated by the creator of the distribution. If a derivative work is + generated from an existing distribution, then the existing copyright + must be maintained, and additional copyrights may be appended to the end + of this element. It may also be the primary copyright for all code + provided in the Distribution Package. + + + + + A license that describes any + restrictions on the use of this distribution. If a derivative work is + allowed by the original license and a derivative work is generated from + an existing distribution, then the existing license must be maintained, + and additional licenses may be appended to the end of this element. It + may also be the primary license for all code provided in the + distribution file. Alternatively, this may point to a filename that + contains the License. The file (included in the content zip file) will + be stored in the same location as the distribution package's .pkg file. + + + + + + A one line description of the + Distribution Package. + + + + + A complete description of the + Distribution Package. This description may include the release name of + the file, the version of the file, and a complete description of the + file contents and/or features including a description of the updates + since the previous file release. + + + + + The packaging utilities will use this + MD5 sum value of the included ZIP file containing files and/or code. If + this element is not present, then installation tools should assume that + the content is correct, or that other methods may be needed to verify + content. + + + + + This version of this XML Schema is 1.1 + Changes to 1.1 from 1.0 + #1 Updated to present date and new + version which is important to reflect the present state of the + matter + #2 Added definition/enumeration of + UNDEFIND type 2 is important since there is a large body of legacy code + for which the GUID’s and other code/data objects were not decorated with + their usage. This document will allow for importing today’s source + artifacts and producing decorations using the ‘Undefined’ versus having + an error + #3 Allow for inclusion of ARM and future + architecture types + + + + + + If set to true, all content within this + Distribution Package should NOT be modified. The default permits + modification of all content. + + + + + If set to true, then the content can be + repackaged into another distribution package. The default prohibits + repackaging the Distribution content. + + + + + + + + + A package is a collection of related objects - + Includes, Libraries and Modules. + Each package is uniquely identified by it's GUID and + Version number. Backward compatible releases of a package need only change the + version number, while non-backward compatible changes require the GUID to change + (resetting the version number to 1.0 is optional.) + + + + + + + + + + This is the User Interface + Name for this package. + + + + + + + This is a + single word BaseName of the package. This BaseName + can be used by tools as a keyword and for + directory/file creation. + + + + + + + + + This GUID and the Version + attribute uniquely identify a given package. + + + + + + + + This value, + along with the GUID, is used to uniquely identify + this object. + Backward + compatible changes must make sure this number is + incremented from the most recent version. + Non-backward compatible changes require a new + GUID, and the version can be reset. + + + + + + + + + + If the package requires a + different copyright than the distribution package, this + element can list one or more copyright lines. + + + + + + If the package requires + licenses that are different from the distribution package + license, this element can contain one or more license text + paragraphs (or license filenames.) + + + + + A one line description of + this package. + + + + + A complete description of a + package. This description may include the release name of + the package, the version of the package, and a complete + description of the package contents and/or features + including a description of the updates since the previous + package’s release. + + + + + This element is the location + (in the ZIP file) for the root directory of a package. + + + + + + + + + + + The term cloned is used here to indicate + that this package as been copied and modified to a completely different + package. An example might be for a new generation of chipsets that have + few or no elements in common with the original. + + + + + + This GUID and the Version + attribute uniquely identify the Package that this Package + was copied from. + + + + + + + This value, + along with the GUID, is used to uniquely identify + the package that this package was cloned from. + + + + + + + + + + + + + + + Library Classes are public interfaces + that can be used by modules. One or more library instances can implement + a library class, however only one library instance can be linked to an + individual module. This provides the platform integrator with the + flexibility of choosing one library instance's implementation over a + different library instance. + + + + + + + + + The header file + provides definitions and function prototypes for a + library class. Modules can be coded against these + functions, using the definitions in this header, + without concerning themselves about the libraries' + implementation details. This is a PackagePath + relative path and filename for the include file. + + + + + + + + + This GUID and + the Version attribute uniquely identify the + Recommended Library Instance. + + + + + + + This value, + along with the GUID, is used to uniquely identify + this object. If this value is not specified, then + any version of the library instance is + recommended. + + + + + + + + + + + + + + The single word name + of the Library Class that module developers will use + to identify a library class dependency. + + + + + + + + + + + + + + This section is used to list header + files for industry standards not under the auspices of UEFI.org. For + example, headers that contain definitions and data structures for the + USB specifications. + + + + + + + + + The package + relative path and filename (in the content zip + file) of the industry standard include file. + + + + + + + + + + + + + + + All top level header files that are + included by a package that are not listed above. They cannot + be: + 1) Local to a module (module specific.) + 2) An industry standard header. + 3) A library class header. + + + + + + + + + + This is the + Package relative path and filename location within + the content ZIP file. + + + + + + + + + + + + + + + + + + + + + + + + This section lists the + Module Surface Area for all modules provided with this + package. + + + + + + + + + + This section defines the mapping of GUID + C names to GUID values as a Registry Format GUID. + Modules that use these GUIDs must + specify their dependency on this package. + + + + + + Individual GUID Declarations + + + + + + + + + + + + + + + + + + + + + This section defines the mapping of + Protocol C names to GUID values as a Registry Format GUID. + Modules that use these Protocols must + specify their dependency on this package. + + + + + + Individual Protocol + Declarations + + + + + + + + + + + + + + + + + + + This section defines the mapping of Ppi + C names to GUID values as a Registry Format GUID. + Modules that use these Ppis must specify + their dependency on this package. + + + + + + Individual PPI Declarations + + + + + + + + + + + + + + + + + + + + This section is used to declare platform + configuration knobs that are defined by this package. + Modules that use these PCD values must + specify their dependency on this package. + + + + + + + + + Specifies the C + name of the Token Space GUID of which this PCD + Entry is a member. This C name should also be + listed in the GUIDs section, (specified above,) + where the C name is assigned to a GUID value. + + + + + + Specifies the + 32-bit token value for this PCD Entry. The Token + number must be unique to the Token Space that + declares the PCD. + The minLength of + 3 is required to handle the "0x" prefix to the hex + number. + + + + + + + + + + + + A string that + contains the data type of this PCD Entry. PCD data + types are restricted to the following set:UINT8, + UINT16, UINT32, UINT64, VOID*, BOOLEAN. + + + + + + A string that + contains one or more PCD Item types separated by + spaces. The PCD Item types are restricted to + FeaturePcd, FixedPcd, PatchPcd, Pcd and/or PcdEx. + + + + + + + This is a + recommended maximum data size for VOID* data + types, the actual value should be defined by the + Platform Integrator. It is not required for the + other data types. + The minLength of + 3 is required to handle the "0x" prefix to the hex + number. + + + + + + + + + + + + + Valid Error + messages that may be implemented in a module for + the PCD Entry. Only One Error Number per PcdError, + (multiple ErrorMessage entries are permitted) and + multiple PcdError elements are permitted. + + + + + + + One of the + following types of comparisons, which must be able + to evaluate to either true or false. + + + + + The PCD Value + must be space separated list of values. Values are + restricted to the data type of this PCD. + + + + + + + + + + + + + The PCD must + be within a specifed range of numeric values. + Restricted to C style Relational, Equality and + Logicial Operators and parenthesis are valid. Only + the CName for this PCD is permitted in the + ValidValueRange expression. All other values must + be numeric. + LValue (op + RValue)+ + + + + + A in-fix + logical expression using C style logical + operators. + + + + + + A hexadecimal + value for the error message as defined by + specifications. + The minLength + of 3 is required to handle the "0x" prefix to the + hex number. + + + + + + + + + + + This string + should be defined by specifications. There are + pre-defined error number ranges in the UEFI/PI + specificaiton. + + + + + + + + + + + + + + + + + + + + + + + + This section is used to describe any PCD + interdependencies or relationships. + + + + + + This entry must used + TokenSpaceGuidCName.PcdCname for every named PCD. Restricted + to Relational, Equality and Logical Operators (NOT, AND, OR, + GT, GE, EQ, LE, LT and XOR) and parenthesis are valid. Only + the TokenSpaceGuidCName.PcdCname us permitted to name PCDs + in the expression. All other values must be numeric. + LValue (op RValue)+ + + + + + + + + + + This section contains files that are not + part of the code distributed with this package. + + + + + + Only required if different + from the Package Copyright. + + + + + Only required if different + from the Package License. + + + + + A one line description of + this section's content. + + + + + A complete description of + the files in this section. + + + + + This is the PackagePath + relative path and filename location within the ZIP file. + + + + + + + + If true, used + by installation tools to ensure that a file that + must be executable has the correct properties to + permit execution. + + + + + + + + + + + + + + + This section is used for any processing + instructions that may be custom to the content provided by this package + that are common to this package. + + + + + + + + This is a single word identifier + for grouping similar content that does not fit into previously + defined sections or other sections of the Distribution. + + + + + + This can be used to + differentiate multiple sections with a grouping. + For example, a PRE_PROCESS + Identifier might indicate specific steps and tools required + before processing module content, while a different + UserExtensions section with a POST_PROCESS Identifier might + describe steps that need to be executed after operations on the + modules in this package. + + + + + + + + + + + + + + + Each module is uniquely identified by it's GUID and + Version number. Backward compatible releases of a module need only change the + version number, while non-backward compatible changes require the GUID to change + (resetting the version number to 1.0 is optional.) + + + + + + + + + + This is the User Interface + Name for this Module. + + + + + + + This is a + single word BaseName that will be used to create a + module meta-data file. + This name + should also be used to create output file names + and directories. + + + + + + + + + This GUID and the Version + attribute uniquely identify a given Module. + + + + + + + + This value, + along with the GUID, is used to uniquely identify + this object. + Backward + compatible changes must make sure this number is + incremented from the most recent version. + Non-backward compatible changes require a new + GUID, and the version can be reset. + + + + + + + + + + This is only required if the + Copyright is different from either the Package or + Distribution copyright. Multiple copyright lines are + permitted within this section. + + + + + This is only required if the + license is different from either the Package or Distribution + license. Multiple licenses are permitted within this + section. + + + + + A brief text description of + the module. + + + + + A complete description of + the module contents and/or features including a description + of the updates since the previous module release. + + + + + + + + + + + List general information about a module, + including the Supported Architectures, this module's type, + specifications the module is coded against, and other informational + content. + + + + + + One of the Enumerated module + types that limit the use of a module. + + + + + For stand-alone modules that + are NOT part of any package, this is the path to the root of + the module as listed in the ZIP file. For modules included + in a package, this is the location, relative to the root of + the package (PackagePath) this module belongs to. + + + + + + This element is only + required for the PEIM that produces the PCD PPI or the DXE + Driver that produces the PCD Protocol. + + + + + + + + + + + + + + + + This is a list of other + specifications that this module is written against. These + entries can be used in #define statements (depending on the + build system implementation, they may be autogenerated.) + + + + + + + + + + + + + + Different firmware execution + paths may be taken based on a given state of the hardware, + firmware, or through feature settings. A BootMode may be + declared (PRODUCES) or discovered (CONSUMES) based on these + states and feature settings. If the usage is UNDEFINE, it + implies that a Boot Mode is used, but the package creator + does not know how it is used. The supported boot modes map + to the PI specification Boot Modes. The boot modes listed + with Recovery are to indicate that the BootMode is valid + during a recovery boot. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The module + always supports the given boot modes. + + + + + + The module may + support a given mode on some execution paths. + + + + + + The module + will change the boot mode. + + + + + The module + will change the boot mode on some exection paths. + + + + + + The package + creator does not know how the boot mode is used. + + + + + + + + + + + + + + The functions that make up + the Event, Timer, and Task Priority Services are used during + preboot to create, close, signal, and wait for events; to + set timers; and to raise and restore task priority levels as + defined in the UEFI specification. GUIDed events should be + listed in the Guids section. + + + + + + + + + + + The module + will register a notification function and calls + the function when it is signaled. + + + + + + The module + will register a notification function and calls + the function when it is signaled on some execution + paths. + + + + + The module + will signal all events in an event group. + + + + + + The module + will signal all events in an event group under + some execution paths. + + + + + The package + creator does not know how an event is used. + + + + + + + + + + + + + + + + + + + + + + + + + This is a list of non-GUIDed + Hand Off Blocks (HOBs) produced or consumed by this module. + + + + + + + + + + + + + + + + + + + + + + + + A HOB must be + present in the system. + + + + + If present, + the HOB will be used. + + + + + The HOB is + always produced by the module. + + + + + The HOB may be + produced by the module under some execution paths. + + + + + + The package + creator knows that a HOB is used, but does not + know how it is used. + + + + + + + + + + + + + + + + + + + This section may be included for Modules + that are copied from a different module. + + + + + + This GUID and the Version + attribute uniquely identify the Module that this Module was + copied from. + + + + + + + This value, + along with the GUID, is used to uniquely identify + this object. + + + + + + + + + + + + + + A list of the different Library Classes + consumed by a driver, core and/or application module, or produced by a + Library module. + + + + + + + + + Used by tools + to identify different instances of libraries that + provide the library class. This keyword identifies + the library class this module needs to be linked + against. + + + + + + + + This GUID and + the Version attribute uniquely identify the + recommended Library Instance for this module . + + + + + + + + This value, + along with the GUID, is used to uniquely identify + this object. + + + + + + + + + + + + + + + Library + instances can provide code for a library class, or + may require other library instances themselves. + Since different execution paths in a library (or + module) may need different library classes based + on some setting, library classes may not alway be + required. + + + + + + + + + + + + + + A FeatureFlag + attribute must evaluate to either true or false - it + may be a fixed value of true or false, a C name or + an in-fix expression. + + + + + + + + + + + + + + + This is the module relative + (ModuleProperties.Path) path and filename location within + the ZIP file. + + + + + + + The Family + attribute is used to restrict usage to a given + family of compilers, such as GCC or MSFT. Since + not all code processing tools use the same syntax, + especially for assembly, this field can be used to + identify different syntax. + + + + + + + + + + + + + + + + + + + + + + + + This is the + module relative (ModuleProperties.Path) path and + filename location within the ZIP file. + + + + + + + + + + Binary file + distribution is limited to UEFI/PI FFS leaf + section file types. + + + + + + + A UEFI/PI FFS + Leaf section file type, not a raw PE32 file. + + + + + + + + + + + + + + + + + + + + + + + + + + + This section + contains information about how the module was + coded, such as Compiler Tools, Flags, PCDs (only + PatchPcd and/or PcdEx) and Library Class Instances + used to build the binary. + + + + + + + The element is + the Patchable PCD Value that was used during the + build. + + + + + + + + The minLength + of 3 is required to handle the "0x" prefix to the + hex number. + + + + + + + + + + + + This field is + required if the Pcd Datum Type is VOID* + The minLength + of 3 is required to handle the "0x" prefix to the + hex number. + + + + + + + + + + + The minLength + of 3 is required to handle the "0x" prefix to the + hex number. + + + + + + + + + + + Error + information implemented by the module. + + + + + + + The minLength + of 3 is required to handle the "0x" prefix to the + hex number. + + + + + + + + + + + + + + + + + + + + + + + + + + The element is + the DynamicEx PCD Value that was used during the + build. + + + + + + + The minLength + of 3 is required to handle the "0x" prefix to the + hex number. + + + + + + + + + + + + This field is + required if the Pcd Datum Type is VOID* + + + + + + + + + + + + + Error + information implemented by the module. + + + + + + + The minLength + of 3 is required to handle the "0x" prefix to the + hex number. + + + + + + + + + + + + + + + + + + + + + + + + + + This is the + actual library instance that was used to link + against the module. + + + + + + This GUID and + the Version attribute uniquely identify the actual + Library Instance linked in this module. + + + + + + + + This value, + along with the GUID, is used to uniquely identify + this object. + + + + + + + + + + + + + + + Any + description of OS, Tool, and flags for the + individual tool can go in this section. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This GUID and + the Version attribute uniquely identify Package + that this Module depends on. + + + + + + + This value, + along with the GUID, is used to uniquely identify + this object. If the version attribute is not + specified, the most recent version of the package + can be used. + + + + + + + + + + + + + + + + + + + + + + + + + + + Only valid for + Variable GUID types. + This can be either a Hex Array or + C string in unicode format: L"string" Data. + + + + + + + + + + + The module does + not install the GUID, and the GUID must be present + for the module to execute. + + + + + The module + does not install the GUID, however, the GUID will + be used if it is present. + + + + + The module + always installs the GUID. + + + + + The Module + will install the GUID under certain execution + paths. + + + + + The package + creator knows that a GUID is used, but does not + know how it is used. + + + + + + + + + + + + + + + + + + + A listing of protocols required or + produced by this module. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A listing of PPIs required or produced + by this module. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + These elements specify additional + information about the module. This area may be used by tools to generate + code. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This section describes how a platform is + coded with respect to the platform configuration knobs. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This is the PEI dependency expression + for a Dependency Section. + + + + + + An in-fix expression, of C + identifiers and TRUE, FALSE, AND, OR, NOT, BEFORE, and AFTER + as well as parenthesis () in the in-fix notation. The + operators are restricted to grammar defined in the PI + specification. + + + + + + + + + + + + + + This is the DXE dependency expression + for a Dependency Section. + + + + + + An in-fix expression, of C + identifiers and TRUE, FALSE, AND, OR, NOT, BEFORE, and AFTER + as well as parenthesis () in the in-fix notation. The + operators are restricted to grammar defined in the PI + specification. + + + + + + + + + + + + + + This is the SMM dependency expression + for a Dependency Section. + + + + + + An in-fix expression, of C + identifiers and TRUE, FALSE, AND, OR, NOT, BEFORE, and AFTER + as well as parenthesis () in the in-fix notation. The + operators are restricted to grammar defined in the PI + specification. + + + + + + + + + + + + + + + This section is used to provide comments + and/or list auxiliary files, such as pdb or map files. + + + + + + + + + + + + + + + + This is the path and + filename location within the ZIP file. + + + + + + + If true, used + by installation tools to ensure that a file that + must be executable has the correct properties to + permit execution. + + + + + + + + + + + + + + This section is used for any processing + instructions that may be custom to the content provided by the + distribution that are common to module. + The content is vendor specific. + The content can be plain text as well as + any user-defined, properly formatted XML structure. + + + + + This is a single word identifier + for grouping similar content. For example, ReferenceBuild might + be used to identify non-PI compliant build steps, with two + different UserExtensions sections, one with an Identifier of + Prebuild, and another of PostBuild. Both UserExtensions sections + would use the same UserId. + + + + + This can be any string used to + differentiate or identify this section from other UserExtensions + sections. + For example, a PRE_PROCESS + Identifier might indicate specific steps and tools required + before processing module content, while a different + UserExtensions section with a POST_PROCESS Identifier might + describe steps that need to be executed after operations on this + module. + + + + + + + + + + + This attribute is used when the binaries are + distributed for this module and no code generation from source files is + required. If set, then the BinaryFiles section should be used, and any files + listed in the SourceFiles section do not have to be built. Additionally, the + AsBuilt section for each binary file must be included. + + + + + + + + + + + + + + + + This is the User Interface + Name for this Tools Distribution. + + + + + This is only required if the + Copyright is different from the Distribution Package + copyright. + + + + + This is only required if the + License is different from the Distribution Package license. + + + + + + This is only required if the + Abstract is different from the Distribution Package + Abstract. + + + + + This is only required if the + Description is different from the Distribution Package + Description. + + + + + + + + This is the path and filename location + within the ZIP file. + + + + + + + This is required for + tools that execute; it should not be used for + configuration files. + + + + + If true, used by + installation tools to ensure that a file that must be + executable has the correct properties to permit + execution. + + + + + + + + + + + + + + This section contains a list of files that are not + part of the code distributed with modules, packages or tools. + + + + + + + + + The User interface name for + this content. + + + + + This is only required if the + Copyright is different from the Distribution Package + Copyright. + + + + + This is only required if the + License is different from the Distribution Package License. + + + + + + + + + + + + + + + + + + + This is the path and filename location + within the ZIP file. + + + + + + + If true, used by + installation tools to ensure that a file that must be + executable has the correct properties to permit + execution. + + + + + + + + + + + + + + + + + + + This is a single word identifier for + grouping similar content. For example, ReferenceBuild might be used to + identify non-PI compliant build steps, with two different UserExtensions + sections, one with an Identifier of Prebuild, and another of PostBuild. Both + UserExtensions sections would use the same UserId. + + + + + This can be any string used to differentiate + or identify this section from other UserExtensions sections. + For example, a PRE_PROCESS Identifier might + indicate specific steps and tools required before processing distribution + package content, while a different UserExtensions section with a + POST_PROCESS Identifier might describe steps that need to be executed after + operations on this content. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Any processor architecture not listed above. + The Architecture must be a target architecture of one or more compiler tool + chains. + + + + + + + + + + + + + Any other family of build utilities for + which compiler tools exist. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The following module types are defined by + specifications. + Module types for components and libraries defined + for this distribution mechanism. + + + + + Use of this module is not restricted. + + + + + + This module is only applicable to the DXE + core. + + + + + This module is only applicable to a DXE + driver. + + + + + This module is only applicable to a DXE + runtime driver. + + + + + This module is only applicable to an IPF DXE + runtime driver. + + + + + This module is only applicable to a DXE SMM + driver. + + + + + This module is only applicable to the PEI + core. + + + + + This module is only valid for PEI modules. + + + + + + This module is only applicable to Security + phase. + + + + + This module is only valid for UEFI drivers. + + + + + + This module is only valid for UEFI runtime + drivers. + + + + + This module is only valid for UEFI + applications. + + + + + This module is only applicable to the SMM + core. + + + + + This content is restricted to a specific + implementation. + + + + + This enumeration is for use in a list that + where the package creator does not know the what module types are supported + by a module. + + + + + This pattern has been added for use in a + module lists - for future expansion. + + + + + + + + The following data types are defined by the PCD + specification (or PCD section of the UEFI/PI specifications.) + + + + + + + + + + + + + + + + + + + + The Feature PCD is a binary, evaluating to + either true or false. This is used during build to include/exclude content. + It can also be used during execution to force execution paths within + drivers, or to enable/disable features within a driver for a given platform. + + + + + + The Fixed PCD is a #define value that is set + at build time. + + + + + The Patch PCD is a #define that is set at + build time, and that can be modified within a binary file. Additional + information, such as the offset location of the value, along with it's + length may need to be provided. + + + + + This PCD type has an overloaded definition. + Prior to build, the platform integrator may choose to implement a PCD as + Fixed, Patchable or a Dynamic PCD. If the platform integrator choose to use + the PCD as dynamic, then a PCD driver is required in the platform + (PEI/DXE/both) to track the PCD in some sort of 'database' of these items. + For Dynamic PCDs, the PcdGet* must pass in the token space guid and the + token number to retrieve data (PcdSet* also needs these values.) + + + + + + The PCD can only be used as Dynamic, and the + platform firmware must contain a driver to maintain a 'database' of these + items. For Dynamic PCDs, the PcdGet* must pass in the token space guid and + the token number to retrieve data (PcdSet* also needs these values.) + + + + + + + + + + + A GUID must contain five different Hexadecimal + character sets that are separated by a dash (-) character. + + + + + + + + + The EDK II build system supports workstations + running one of the following supported operating systems. This is the OS for the + developer's workstation, not the target platform. + + + + + For Windows 2003, Windows XP and Windows + Vista. + + + + + For Windows 2003, Windows XP and Windows + Vista. + + + + + + + + + Typically, this is used for Windows Batch + files. + + + + + Typically use for shell scripts - valid for + any Linux and Mac OS/X. + + + + + diff --git a/BaseTools/Conf/build_rule.template b/BaseTools/Conf/build_rule.template index ff5af1ce78..652c9f3ee7 100644 --- a/BaseTools/Conf/build_rule.template +++ b/BaseTools/Conf/build_rule.template @@ -305,7 +305,7 @@ # #The below 2 lines are only needed for UNIXGCC tool chain, which genereates PE image directly # - -$(OBJCOPY) --add-gnu-debuglink=$(DEBUG_DIR)(+)$(MODULE_NAME).debug ${src} + -$(OBJCOPY) $(OBJCOPY_ADDDEBUGFLAG) ${src} -$(CP) $(DEBUG_DIR)(+)$(MODULE_NAME).debug $(BIN_DIR) "$(GENFW)" -e $(MODULE_TYPE) -o ${dst} ${src} $(GENFW_FLAGS) diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template index c8af70495d..f1176d6214 100644 --- a/BaseTools/Conf/tools_def.template +++ b/BaseTools/Conf/tools_def.template @@ -1969,6 +1969,8 @@ NOOPT_DDK3790xASL_IPF_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF *_*_*_OBJCOPY_FLAGS = objcopy not needed for *_*_*_SYMRENAME_PATH = echo *_*_*_SYMRENAME_FLAGS = Symbol renaming not needed for +DEBUG_*_*_OBJCOPY_ADDDEBUGFLAG = --add-gnu-debuglink=$(DEBUG_DIR)\$(MODULE_NAME).debug +RELEASE_*_*_OBJCOPY_ADDDEBUGFLAG = DEFINE GCC_ALL_CC_FLAGS = -g -Os -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-missing-braces -Wno-array-bounds -c -include AutoGen.h DEFINE GCC_IA32_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -m32 -malign-double -freorder-blocks -freorder-blocks-and-partition -O2 -mno-stack-arg-probe @@ -2473,7 +2475,7 @@ DEFINE GCC45_ASM_FLAGS = DEF(GCC44_ASM_FLAGS) *_ELFGCC_IA32_CC_FLAGS = -m32 -g -fshort-wchar -fno-strict-aliasing -Wall -malign-double -c -include $(DEST_DIR_DEBUG)/AutoGen.h -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings *_ELFGCC_IA32_SLINK_FLAGS = -*_ELFGCC_IA32_DLINK_FLAGS = -melf_i386 -nostdlib --shared --entry $(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) +*_ELFGCC_IA32_DLINK_FLAGS = -melf_i386 -nostdlib --shared --entry $(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map #*_ELFGCC_IA32_DLINK_FLAGS = -melf_i386 -nostdlib -n -q -Ttext 0x220 --entry $(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) *_ELFGCC_IA32_ASM_FLAGS = -m32 -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h *_ELFGCC_IA32_PP_FLAGS = -m32 -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h @@ -2496,7 +2498,7 @@ DEFINE GCC45_ASM_FLAGS = DEF(GCC44_ASM_FLAGS) *_ELFGCC_X64_RC_PATH = DEF(ELFGCC_BIN)/objcopy *_ELFGCC_X64_CC_FLAGS = -Os -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-missing-braces -Wno-address -Wno-array-bounds -c -include AutoGen.h -D_EFI_P64 -*_ELFGCC_X64_DLINK_FLAGS = -nostdlib --shared --entry $(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) +*_ELFGCC_X64_DLINK_FLAGS = -nostdlib --shared --entry $(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map *_ELFGCC_X64_SLINK_FLAGS = *_ELFGCC_X64_ASM_FLAGS = -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h *_ELFGCC_X64_PP_FLAGS = -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h @@ -2518,7 +2520,7 @@ DEFINE GCC45_ASM_FLAGS = DEF(GCC44_ASM_FLAGS) *_ELFGCC_IPF_RC_PATH = DEF(ELFGCC_BIN)/objcopy *_ELFGCC_IPF_CC_FLAGS = -Os -fshort-wchar -Wall -Werror -c -include AutoGen.h -D_EFI_P64 -*_ELFGCC_IPF_DLINK_FLAGS = -nostdlib --shared --entry $(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) +*_ELFGCC_IPF_DLINK_FLAGS = -nostdlib --shared --entry $(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map *_ELFGCC_IPF_SLINK_FLAGS = *_ELFGCC_IPF_ASM_FLAGS = -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h *_ELFGCC_IPF_PP_FLAGS = -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h -- cgit v1.2.3