diff options
author | Gao, Liming <liming.gao@intel.com> | 2014-01-27 05:23:15 +0000 |
---|---|---|
committer | lgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524> | 2014-01-27 05:23:15 +0000 |
commit | f51461c829c124288a930829a78e2a5a799f4039 (patch) | |
tree | 1072993516da9d887f0e0fd876c9ac5630c19ae2 /BaseTools/Conf | |
parent | 7771be9fd0b9b3c7f5c0659c416535171de31191 (diff) | |
download | edk2-platforms-f51461c829c124288a930829a78e2a5a799f4039.tar.xz |
Sync BaseTool trunk (version r2649) into EDKII BaseTools.
Signed-off-by: Gao, Liming <liming.gao@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15188 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'BaseTools/Conf')
-rw-r--r-- | BaseTools/Conf/XMLSchema/DistributionPackage.xsd | 5534 | ||||
-rw-r--r-- | BaseTools/Conf/tools_def.template | 45 |
2 files changed, 2787 insertions, 2792 deletions
diff --git a/BaseTools/Conf/XMLSchema/DistributionPackage.xsd b/BaseTools/Conf/XMLSchema/DistributionPackage.xsd index c1f2184ca6..5fbbd59f93 100644 --- a/BaseTools/Conf/XMLSchema/DistributionPackage.xsd +++ b/BaseTools/Conf/XMLSchema/DistributionPackage.xsd @@ -1,2767 +1,2767 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -Filename: DistributionPackage.xsd - -Copyright (c) 2008 - 2012, Intel Corporation. All rights reserved. - -This program and the accompanying materials are licensed and made available -under the terms and conditions of the BSD License which may be found at - http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - ---> -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" - targetNamespace="http://www.uefi.org/2012/1.0" xmlns="http://www.uefi.org/2012/1.0"> - <xs:element name="DistributionPackage"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This schema defines the UEFI/PI Distribution Package description (PKG) - file. It describes the content of:</xs:documentation> - <xs:documentation xml:lang="en-us"> 1) Package descriptions with definitions and headers.</xs:documentation> - <xs:documentation xml:lang="en-us"> 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.) </xs:documentation> - <xs:documentation xml:lang="en-us"> 3) The distribution of custom tools used to modify the binary images to - create UEFI/PI compliant images. </xs:documentation> - <xs:documentation xml:lang="en-us"> 4) Finally, it can be used to distribute other miscellaneous content - that is not specific to UEFI/PI images. </xs:documentation> - <xs:documentation xml:lang="en-us"> The Package Surface Area describes the content of packages, while the - Module Surface Area provides information relevant to source and/or binary distributions. - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element ref="DistributionHeader" minOccurs="1" maxOccurs="1"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This header contains (legal) information usually required - for distributing both binary and/or source code. </xs:documentation> - </xs:annotation> - </xs:element> - <xs:element ref="PackageSurfaceArea" minOccurs="0" maxOccurs="unbounded"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> The list of packages in this distribution. </xs:documentation> - <xs:documentation xml:lang="en-us"> Packages are groups of files and/or modules that are similar - in nature.</xs:documentation> - <xs:documentation xml:lang="en-us"> Packages are uniquely identified by a package GUID and a - package version. </xs:documentation> - <xs:documentation xml:lang="en-us"> A package can declare public mappings of C names to GUID - values. </xs:documentation> - <xs:documentation xml:lang="en-us"> A package can provide header files for library classes - and/or other industry standard definitions. </xs:documentation> - <xs:documentation xml:lang="en-us"> A package can also declare public mappings of platform - configuration database (PCD) "knobs" to control features and operation of modules - within a platform. </xs:documentation> - <xs:documentation xml:lang="en-us"> Finally, a package lists the library instances and/or - modules that are provided in a distribution package. </xs:documentation> - </xs:annotation> - </xs:element> - <xs:element ref="ModuleSurfaceArea" minOccurs="0" maxOccurs="unbounded"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - <xs:documentation xml:lang="en-us"> UEFI/PI compliant libraries and modules are uniquely - identified by the Module's GUID and version number. </xs:documentation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - </xs:annotation> - </xs:element> - <xs:element ref="Tools" minOccurs="0" maxOccurs="unbounded"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - <xs:documentation xml:lang="en-us"> Tools in this section can:</xs:documentation> - <xs:documentation xml:lang="en-us"> 1) Parse build meta-data files to create source code files - and build scripts. </xs:documentation> - <xs:documentation xml:lang="en-us"> 2) Modify image files to conform to UEFI/PI specifications. </xs:documentation> - <xs:documentation xml:lang="en-us"> 3) Generate binary files from certain types of text/unicode - files. </xs:documentation> - <xs:documentation xml:lang="en-us"> 4) Generate PCI Option Roms or Firmware Device images. </xs:documentation> - <xs:documentation xml:lang="en-us"> 5) Implement external encoding/decoding/signature/GUIDed - tools. </xs:documentation> - <xs:documentation xml:lang="en-us"> 6) Distribution Package create/install/remove tools. - </xs:documentation> - </xs:annotation> - </xs:element> - <xs:element ref="MiscellaneousFiles" minOccurs="0" maxOccurs="unbounded"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - </xs:annotation> - </xs:element> - <xs:element ref="UserExtensions" minOccurs="0" maxOccurs="unbounded"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - - </xs:complexType> - </xs:element> - <!-- End of the DistributionPackage Description --> - - <xs:element name="DistributionHeader"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="1" name="Name"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This is the User Interface Name for this Distribution - Package. </xs:documentation> - <xs:documentation xml:lang="en-us"> Each Distribution Package is uniquely identified by it's - GUID and Version number. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:normalizedString"> - <xs:attribute name="BaseName" type="xs:NMTOKEN" use="optional"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - <xs:documentation xml:lang="en-us"> White space and special characters (dash and - underscore characters may be used) are not permitted in this name. - </xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element minOccurs="1" maxOccurs="1" name="GUID"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This 128-bit GUID and the Version attribute uniquely - identify this Distribution Package. </xs:documentation> - <xs:documentation xml:lang="en-us"> 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.) </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="RegistryFormatGuid"> - <xs:attribute name="Version" type="xs:decimal" use="required"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This value, along with the GUID, is used to - uniquely identify this object. The higher the number, the more recent the - content. </xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element minOccurs="1" maxOccurs="1" name="Vendor" type="xs:normalizedString"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> A string identifying who created this distribution package. - </xs:documentation> - </xs:annotation> - </xs:element> - <xs:element minOccurs="1" maxOccurs="1" name="Date" type="xs:dateTime"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - </xs:annotation> - </xs:element> - <xs:element minOccurs="1" maxOccurs="unbounded" name="Copyright"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:string"> - <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - - </xs:element> - <xs:element minOccurs="1" maxOccurs="unbounded" name="License"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:string"> - <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element minOccurs="1" maxOccurs="unbounded" name="Abstract"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> A one line description of the Distribution Package. - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:normalizedString"> - <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element minOccurs="0" maxOccurs="unbounded" name="Description"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:string"> - <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element minOccurs="0" maxOccurs="1" name="Signature" type="Md5Sum"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - </xs:annotation> - </xs:element> - <xs:element minOccurs="1" maxOccurs="1" name="XmlSpecification" type="xs:decimal" default="1.1"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This version of this XML Schema is 1.1 </xs:documentation> - <xs:documentation xml:lang="en-us"> Changes to 1.1 from 1.0 </xs:documentation> - <xs:documentation xml:lang="en-us"> #1 Updated to present date and new version which is - important to reflect the present state of the matter</xs:documentation> - <xs:documentation xml:lang="en-us"> #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</xs:documentation> - <xs:documentation xml:lang="en-us">#3 Allow for inclusion of ARM and future architecture - types</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - <xs:attribute name="ReadOnly" type="xs:boolean" default="false" use="optional"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> If set to true, all content within this Distribution Package - should NOT be modified. The default permits modification of all content. </xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="RePackage" type="xs:boolean" default="false" use="optional"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> If set to true, then the content can be repackaged into another - distribution package. The default prohibits repackaging the Distribution content. - </xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:complexType> - </xs:element> - <!-- End of the DistributionHeader element. --> - - <xs:element name="PackageSurfaceArea"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> A package is a collection of related objects - Includes, Libraries and - Modules. </xs:documentation> - <xs:documentation xml:lang="en-us"> 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.) - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - - <xs:element minOccurs="1" maxOccurs="1" name="Header"> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="1" name="Name"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This is the User Interface Name for this - package. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:normalizedString"> - <xs:attribute name="BaseName" type="xs:NMTOKEN" use="required"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This is a single word BaseName - of the package. This BaseName can be used by tools as a keyword - and for directory/file creation. </xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element minOccurs="1" maxOccurs="1" name="GUID"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This GUID and the Version attribute uniquely - identify a given package. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="RegistryFormatGuid"> - <xs:attribute name="Version" type="xs:decimal" use="required"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This value, along with the GUID, - is used to uniquely identify this object. </xs:documentation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element minOccurs="0" maxOccurs="unbounded" name="Copyright"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> If the package requires a different copyright - than the distribution package, this element can list one or more copyright - lines. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:string"> - <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional" - /> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - - </xs:element> - <xs:element minOccurs="0" maxOccurs="unbounded" name="License"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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.) </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:string"> - <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional" - /> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - - </xs:element> - <xs:element minOccurs="0" maxOccurs="unbounded" name="Abstract"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> A one line description of this package. - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:normalizedString"> - <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional" - /> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element minOccurs="0" maxOccurs="unbounded" name="Description"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:string"> - <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional" - /> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element minOccurs="1" maxOccurs="1" name="PackagePath" type="xs:anyURI"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This element is the location (in the ZIP file) - for the root directory of a package. </xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <!-- End of PackageSurfaceArea Header element. --> - - <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="1" name="GUID"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This GUID and the Version attribute uniquely - identify the Package that this Package was copied from. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="RegistryFormatGuid"> - <xs:attribute name="Version" type="xs:decimal" use="required"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This value, along with the GUID, - is used to uniquely identify the package that this package was - cloned from. </xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <!-- End of PackageSurfaceArea ClonedFrom element. --> - - <xs:element minOccurs="0" maxOccurs="1" name="LibraryClassDeclarations"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="unbounded" name="LibraryClass"> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile" type="xs:anyURI"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - </xs:annotation> - </xs:element> - <xs:element minOccurs="0" maxOccurs="1" name="RecommendedInstance"> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="1" name="GUID"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This GUID and the - Version attribute uniquely identify the Recommended Library - Instance. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="RegistryFormatGuid"> - <xs:attribute name="Version" type="xs:decimal" - use="optional"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - <xs:attribute name="Keyword" type="xs:NCName" use="required"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> The single word name of the Library - Class that module developers will use to identify a library class - dependency. </xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attributeGroup ref="SupportedArchMod"/> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <!-- End of PackageSurfaceArea LibraryClassDeclarations element. --> - - <xs:element minOccurs="0" maxOccurs="1" name="IndustryStandardIncludes"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="unbounded" name="IndustryStandardHeader"> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile" type="xs:anyURI"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> The package relative path and - filename (in the content zip file) of the industry standard include - file. </xs:documentation> - </xs:annotation> - </xs:element> - <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <!-- End of PackageSurfaceArea IndustryStdIncludes element. --> - - <xs:element minOccurs="0" maxOccurs="1" name="PackageIncludes"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> All top level header files that are included by a package - that are not listed above. They cannot be:</xs:documentation> - <xs:documentation xml:lang="en-us"> 1) Local to a module (module specific.) </xs:documentation> - <xs:documentation xml:lang="en-us"> 2) An industry standard header. </xs:documentation> - <xs:documentation xml:lang="en-us"> 3) A library class header. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="unbounded" name="PackageHeader"> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This is the Package relative path - and filename location within the content ZIP file. - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:anyURI"> - <xs:attributeGroup ref="SupportedArchMod"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <!-- End of PackageSurfaceArea PackageIncluces element. --> - - <xs:element minOccurs="0" maxOccurs="1" name="Modules"> - <xs:complexType> - <xs:sequence> - <xs:element ref="ModuleSurfaceArea" minOccurs="1" maxOccurs="unbounded"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This section lists the Module Surface Area for - all modules provided with this package. </xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <!-- End of PackageSurfaceArea Modules element. --> - - <xs:element minOccurs="0" maxOccurs="1" name="GuidDeclarations"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This section defines the mapping of GUID C names to GUID - values as a Registry Format GUID. </xs:documentation> - <xs:documentation xml:lang="en-us"> Modules that use these GUIDs must specify their dependency - on this package. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> Individual GUID Declarations </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/> - <xs:element minOccurs="1" maxOccurs="1" name="GuidValue" - type="RegistryFormatGuid"/> - <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - <xs:attribute name="UiName" type="xs:normalizedString" use="optional"/> - <xs:attribute name="GuidTypes" type="GuidListType" use="optional"/> - <xs:attributeGroup ref="SupportedArchMod"/> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <!-- End of PackageSurfaceArea GuidDeclarations element. --> - - <xs:element minOccurs="0" maxOccurs="1" name="ProtocolDeclarations"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This section defines the mapping of Protocol C names to GUID - values as a Registry Format GUID. </xs:documentation> - <xs:documentation xml:lang="en-us"> Modules that use these Protocols must specify their - dependency on this package. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> Individual Protocol Declarations - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/> - <xs:element minOccurs="1" maxOccurs="1" name="GuidValue" - type="RegistryFormatGuid"/> - <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - <xs:attribute name="UiName" type="xs:normalizedString" use="optional"/> - <xs:attributeGroup ref="SupportedArchMod"/> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <!-- End of PackageSurfaceArea ProtocolDeclarations element. --> - - <xs:element minOccurs="0" maxOccurs="1" name="PpiDeclarations"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This section defines the mapping of Ppi C names to GUID - values as a Registry Format GUID. </xs:documentation> - <xs:documentation xml:lang="en-us"> Modules that use these Ppis must specify their dependency on - this package. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> Individual PPI Declarations </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/> - <xs:element minOccurs="1" maxOccurs="1" name="GuidValue" - type="RegistryFormatGuid"/> - <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - <xs:attribute name="UiName" type="xs:normalizedString" use="optional"/> - <xs:attributeGroup ref="SupportedArchMod"/> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <!-- End of PackageSurfaceArea PpiDeclarations element. --> - - <xs:element minOccurs="0" maxOccurs="1" name="PcdDeclarations"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This section is used to declare platform configuration knobs - that are defined by this package. </xs:documentation> - <xs:documentation xml:lang="en-us"> Modules that use these PCD values must specify their - dependency on this package. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdEntry"> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="1" name="TokenSpaceGuidCname" - type="xs:NCName"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - </xs:annotation> - </xs:element> - <xs:element minOccurs="1" maxOccurs="1" name="Token"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> Specifies the 32-bit token value for - this PCD Entry. The Token number must be unique to the Token Space - that declares the PCD. </xs:documentation> - <xs:documentation xml:lang="en-us"> The minLength of 3 is required to - handle the "0x" prefix to the hex number. </xs:documentation> - </xs:annotation> - <xs:simpleType> - <xs:restriction base="HexNumber"> - <xs:minLength value="3"/> - <xs:maxLength value="10"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/> - <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDatumTypes"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. - </xs:documentation> - </xs:annotation> - </xs:element> - <xs:element minOccurs="1" maxOccurs="1" name="ValidUsage" type="PcdItemListType"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. - </xs:documentation> - </xs:annotation> - </xs:element> - <xs:element minOccurs="1" maxOccurs="1" name="DefaultValue" - type="xs:normalizedString"/> - <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - <xs:documentation xml:lang="en-us"> The minLength of 3 is required to - handle the "0x" prefix to the hex number. </xs:documentation> - - </xs:annotation> - <xs:simpleType> - <xs:restriction base="HexNumber"> - <xs:minLength value="3"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element minOccurs="0" maxOccurs="unbounded" name="Prompt"> - <xs:annotation> - <xs:documentation xml:lang="en-US"> This entry contains prompt - information, that may used by tools to assist platform integrators - with choosing the correct values </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:string"> - <xs:attribute name="Lang" type="xs:language" default="en-us" - use="optional"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/> - - <xs:element minOccurs="0" maxOccurs="unbounded" name="PcdError"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:choice minOccurs="1" maxOccurs="1"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> One of the following - types of comparisons, which must be able to evaluate to - either true or false. </xs:documentation> - </xs:annotation> - <xs:element minOccurs="0" maxOccurs="1" name="ValidValueList"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> The PCD Value must be - space separated list of values. Values are restricted to the - data type of this PCD. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:normalizedString"> - <xs:attribute name="Lang" type="xs:language" use="optional" - /> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element minOccurs="0" maxOccurs="1" name="ValidValueRange" - type="xs:normalizedString"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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.</xs:documentation> - <xs:documentation xml:lang="en-us"> LValue (op RValue)+ - </xs:documentation> - </xs:annotation> - </xs:element> - <xs:element minOccurs="0" maxOccurs="1" name="Expression" - type="xs:normalizedString"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> A in-fix logical - expression using C style logical operators. - </xs:documentation> - </xs:annotation> - </xs:element> - </xs:choice> - <xs:element minOccurs="1" maxOccurs="1" name="ErrorNumber"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> A hexadecimal value for - the error message as defined by specifications. </xs:documentation> - <xs:documentation xml:lang="en-us"> The minLength of 3 is - required to handle the "0x" prefix to the hex number. </xs:documentation> - - </xs:annotation> - <xs:simpleType> - <xs:restriction base="HexNumber"> - <xs:minLength value="3"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element minOccurs="1" maxOccurs="unbounded" name="ErrorMessage"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This string should be - defined by specifications. There are pre-defined error - number ranges in the UEFI/PI specificaiton. - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:string"> - <xs:attribute name="Lang" type="xs:language" default="en-us" - use="optional"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attributeGroup ref="SupportedArchMod"/> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <!-- End of PackageSurfaceArea PcdDeclarations element. --> - - <xs:element minOccurs="0" maxOccurs="1" name="PcdRelationshipChecks"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This section is used to describe any PCD interdependencies - or relationships. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdCheck" type="xs:normalizedString"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - <xs:documentation xml:lang="en-us"> LValue (op RValue)+ </xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - - <xs:element minOccurs="0" maxOccurs="unbounded" name="MiscellaneousFiles"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This section contains files that are not part of the code - distributed with this package. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="0" maxOccurs="1" name="Copyright" type="xs:string"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> Only required if different from the Package - Copyright. </xs:documentation> - </xs:annotation> - </xs:element> - <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> Only required if different from the Package - License. </xs:documentation> - </xs:annotation> - </xs:element> - <xs:element minOccurs="0" maxOccurs="1" name="Abstract" type="xs:string"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> A one line description of this section's - content. </xs:documentation> - </xs:annotation> - </xs:element> - <xs:element minOccurs="0" maxOccurs="unbounded" name="Description" type="xs:string"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> A complete description of the files in this - section. </xs:documentation> - </xs:annotation> - </xs:element> - <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This is the PackagePath relative path and - filename location within the ZIP file. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:anyURI"> - <xs:attribute name="Executable" type="xs:boolean" default="false" - use="optional"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> If true, used by installation - tools to ensure that a file that must be executable has the - correct properties to permit execution. </xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - - </xs:sequence> - </xs:complexType> - </xs:element> - <!-- End of PackageSurfaceArea Misc element. --> - - <xs:element minOccurs="0" maxOccurs="unbounded" name="UserExtensions"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. - </xs:documentation> - </xs:annotation> - <xs:complexType mixed="true"> - <xs:sequence> - <xs:any processContents="lax" minOccurs="0" maxOccurs="1"/> - </xs:sequence> - <xs:attribute name="UserId" type="xs:NCName" use="required"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This is a single word identifier for grouping - similar content that does not fit into previously defined sections or other sections - of the Distribution. </xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="Identifier" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This can be used to differentiate multiple sections - with a grouping. </xs:documentation> - <xs:documentation xml:lang="en-us"> 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. - </xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:anyAttribute processContents="lax"/> - </xs:complexType> - </xs:element> - <!-- End of PackageSurfaceArea UserExtensions element. --> - - </xs:sequence> - </xs:complexType> - </xs:element> - <!-- End of the PackageSurfaceArea element. --> - - <xs:element name="ModuleSurfaceArea"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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.) - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - - <xs:element minOccurs="1" maxOccurs="1" name="Header"> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="1" name="Name"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This is the User Interface Name for this Module. - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:normalizedString"> - <xs:attribute name="BaseName" type="xs:NMTOKEN" use="required"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This is a single word BaseName - that will be used to create a module meta-data file. </xs:documentation> - <xs:documentation xml:lang="en-us"> This name should also be used to - create output file names and directories. </xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element minOccurs="1" maxOccurs="1" name="GUID"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This GUID and the Version attribute uniquely - identify a given Module. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="RegistryFormatGuid"> - <xs:attribute name="Version" type="xs:decimal" use="required"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This value, along with the GUID, - is used to uniquely identify this object. </xs:documentation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element minOccurs="0" maxOccurs="unbounded" name="Copyright"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This is only required if the Copyright is - different from either the Package or Distribution copyright. Multiple copyright - lines are permitted within this section. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:string"> - <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional" - /> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element minOccurs="0" maxOccurs="unbounded" name="License"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This is only required if the license is - different from either the Package or Distribution license. Multiple licenses are - permitted within this section. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:string"> - <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional" - /> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element minOccurs="0" maxOccurs="unbounded" name="Abstract"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> A brief text description of the module. - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:normalizedString"> - <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional" - /> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element minOccurs="0" maxOccurs="unbounded" name="Description"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> A complete description of the module contents - and/or features including a description of the updates since the previous module - release. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:string"> - <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional" - /> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <!-- End of Module Surface Area Header Section --> - - <xs:element minOccurs="0" maxOccurs="1" name="ModuleProperties"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> List general information about a module, including the - Supported Architectures, this module's type, specifications the module is coded against, and - other informational content. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="1" name="ModuleType" type="ModuleTypes"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> One of the Enumerated module types that limit - the use of a module. </xs:documentation> - </xs:annotation> - </xs:element> - <xs:element minOccurs="1" maxOccurs="1" name="Path" type="xs:anyURI"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - </xs:annotation> - </xs:element> - <xs:element minOccurs="0" maxOccurs="1" name="PcdIsDriver"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This element is only required for the PEIM that - produces the PCD PPI or the DXE Driver that produces the PCD Protocol. - </xs:documentation> - </xs:annotation> - <xs:simpleType> - <xs:restriction base="xs:NCName"> - <xs:enumeration value="PEI_PCD_DRIVER"/> - <xs:enumeration value="DXE_PCD_DRIVER"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - - <xs:element minOccurs="0" maxOccurs="1" name="UefiSpecificationVersion" type="xs:decimal"/> - - <xs:element minOccurs="0" maxOccurs="1" name="PiSpecificationVersion" type="xs:decimal"/> - - <xs:element minOccurs="0" maxOccurs="unbounded" name="Specification"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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.) - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:NCName"> - <xs:attribute name="Version" type="xs:decimal" use="required"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - - <xs:element minOccurs="0" maxOccurs="unbounded" name="BootMode"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence minOccurs="0"> - <xs:element minOccurs="1" maxOccurs="1" name="SupportedBootModes"> - <xs:simpleType> - <xs:list> - <xs:simpleType> - <xs:restriction base="xs:NCName"> - <xs:enumeration value="FULL"/> - <xs:enumeration value="MINIMAL"/> - <xs:enumeration value="NO_CHANGE"/> - <xs:enumeration value="DIAGNOSTICS"/> - <xs:enumeration value="DEFAULT"/> - <xs:enumeration value="S2_RESUME"/> - <xs:enumeration value="S3_RESUME"/> - <xs:enumeration value="S4_RESUME"/> - <xs:enumeration value="S5_RESUME"/> - <xs:enumeration value="FLASH_UPDATE"/> - <xs:enumeration value="RECOVERY_FULL"/> - <xs:enumeration value="RECOVERY_MINIMAL"/> - <xs:enumeration value="RECOVERY_NO_CHANGE"/> - <xs:enumeration value="RECOVERY_DIAGNOSTICS"/> - <xs:enumeration value="RECOVERY_DEFAULT"/> - <xs:enumeration value="RECOVERY_S2_RESUME"/> - <xs:enumeration value="RECOVERY_S3_RESUME"/> - <xs:enumeration value="RECOVERY_S4_RESUME"/> - <xs:enumeration value="RECOVERY_S5_RESUME"/> - <xs:enumeration value="RECOVERY_FLASH_UPDATE"/> - <xs:enumeration value="UNDEFINED"/> - </xs:restriction> - </xs:simpleType> - </xs:list> - </xs:simpleType> - </xs:element> - - <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - <xs:attribute name="Usage" use="required"> - <xs:simpleType> - <xs:restriction base="xs:NCName"> - <xs:enumeration value="CONSUMES"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> The module always supports - the given boot modes. </xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="SOMETIMES_CONSUMES"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> The module may support a - given mode on some execution paths. </xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="PRODUCES"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> The module will change the - boot mode. </xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="SOMETIME_PRODUCES"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> The module will change the - boot mode on some exection paths. </xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="UNDEFINED"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> The package creator does not - know how the boot mode is used. </xs:documentation> - </xs:annotation> - </xs:enumeration> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - <xs:attribute name="SupArchList" type="ArchListType" use="optional"/> - <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/> - </xs:complexType> - </xs:element> - - <xs:element minOccurs="0" maxOccurs="unbounded" name="Event" nillable="true"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - <xs:attribute name="Usage" use="required"> - <xs:simpleType> - <xs:restriction base="xs:NCName"> - <xs:enumeration value="CONSUMES"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> The module will register a - notification function and calls the function when it is - signaled. </xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="SOMETIMES_CONSUMES"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> The module will register a - notification function and calls the function when it is - signaled on some execution paths. </xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="PRODUCES"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> The module will signal all - events in an event group. </xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="SOMETIMES_PRODUCES"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> The module will signal all - events in an event group under some execution paths. - </xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="UNDEFINED"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> The package creator does not - know how an event is used. </xs:documentation> - </xs:annotation> - </xs:enumeration> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - <xs:attribute name="EventType" use="required"> - <xs:simpleType> - <xs:restriction base="xs:NCName"> - <xs:enumeration value="EVENT_TYPE_PERIODIC_TIMER"/> - <xs:enumeration value="EVENT_TYPE_RELATIVE_TIMER"/> - <xs:enumeration value="UNDEFINED"/> - </xs:restriction> - </xs:simpleType> - - - </xs:attribute> - <xs:attribute name="SupArchList" type="ArchListType" use="optional"/> - <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/> - </xs:complexType> - </xs:element> - - <xs:element minOccurs="0" maxOccurs="unbounded" name="HOB" nillable="false"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This is a list of non-GUIDed Hand Off Blocks - (HOBs) produced or consumed by this module. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - <xs:attribute name="HobType" use="required"> - <xs:simpleType> - <xs:restriction base="xs:NCName"> - <xs:enumeration value="PHIT"/> - <xs:enumeration value="MEMORY_ALLOCATION"/> - <xs:enumeration value="RESOURCE_DESCRIPTOR"/> - <xs:enumeration value="FIRMWARE_VOLUME"/> - <xs:enumeration value="LOAD_PEIM"/> - <xs:enumeration value="UNDEFINED"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - <xs:attribute name="Usage" use="required"> - <xs:simpleType> - <xs:restriction base="xs:NCName"> - <xs:enumeration value="CONSUMES"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> A HOB must be present in the - system. </xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="SOMETIMES_CONSUMES"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> If present, the HOB will be - used. </xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="PRODUCES"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> The HOB is always produced - by the module. </xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="SOMETIMES_PRODUCES"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> The HOB may be produced by - the module under some execution paths. </xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="UNDEFINED"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> The package creator knows - that a HOB is used, but does not know how it is used. - </xs:documentation> - </xs:annotation> - </xs:enumeration> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - <xs:attribute name="SupArchList" type="ArchListType" use="optional"/> - <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/> - </xs:complexType> - </xs:element> - - </xs:sequence> - <xs:attributeGroup ref="SupportedArchMod"/> - </xs:complexType> - </xs:element> - <!-- End of ModuleProperties Section --> - - <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This section may be included for Modules that are copied - from a different module. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="1" name="GUID"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This GUID and the Version attribute uniquely - identify the Module that this Module was copied from. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="RegistryFormatGuid"> - <xs:attribute name="Version" type="xs:decimal" use="required"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This value, along with the GUID, - is used to uniquely identify this object. </xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <!-- End of ClonedFrom Section. --> - - <xs:element minOccurs="0" maxOccurs="1" name="LibraryClassDefinitions"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> A list of the different Library Classes consumed by a - driver, core and/or application module, or produced by a Library module. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="unbounded" name="LibraryClass"> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="1" name="Keyword" type="xs:NCName"> - <xs:annotation> - <xs:documentation xml:lang="en-us "> 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. - </xs:documentation> - </xs:annotation> - </xs:element> - <xs:element minOccurs="0" maxOccurs="1" name="RecommendedInstance"> - <xs:complexType> - <xs:all> - <xs:element minOccurs="1" maxOccurs="1" name="GUID"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This GUID and the - Version attribute uniquely identify the recommended Library - Instance for this module . </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="RegistryFormatGuid"> - <xs:attribute name="Version" type="xs:decimal" - use="optional"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This value, along with - the GUID, is used to uniquely identify this object. - </xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - </xs:all> - </xs:complexType> - </xs:element> - <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - <xs:attribute name="Usage" use="required"> - <xs:simpleType> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - </xs:annotation> - <xs:restriction base="xs:NCName"> - <xs:enumeration value="PRODUCES"/> - <xs:enumeration value="CONSUMES"/> - <xs:enumeration value="SOMETIMES_CONSUMES"/> - <xs:enumeration value="UNDEFINED"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - - <xs:attributeGroup ref="SupportedArchMod"/> - <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <!-- End of LibraryClassDefinitions Section --> - - <xs:element minOccurs="0" maxOccurs="1" name="SourceFiles"> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This is the module relative - (ModuleProperties.Path) path and filename location within the ZIP file. - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:anyURI"> - <xs:attribute name="Family" type="FamilyTypes" use="optional"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="SupArchList" type="ArchListType" use="optional"/> - <xs:attribute name="SupModList" type="ModuleListType" use="optional"/> - <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - </xs:element> - <!-- End of SourceFiles Section --> - - <xs:element minOccurs="0" maxOccurs="1" name="BinaryFiles"> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="unbounded" name="BinaryFile"> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This is the module relative - (ModuleProperties.Path) path and filename location within the ZIP - file. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:anyURI"> - <xs:attribute name="FileType" use="optional"> - <xs:simpleType> - <xs:restriction base="xs:NCName"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> Binary file distribution - is limited to UEFI/PI FFS leaf section file types. - </xs:documentation> - </xs:annotation> - <xs:enumeration value="GUID"/> - <xs:enumeration value="FREEFORM"/> - <xs:enumeration value="UEFI_IMAGE"/> - <xs:enumeration value="PE32"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> A UEFI/PI FFS Leaf - section file type, not a raw PE32 file. </xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="PIC"/> - <xs:enumeration value="PEI_DEPEX"/> - <xs:enumeration value="DXE_DEPEX"/> - <xs:enumeration value="SMM_DEPEX"/> - <xs:enumeration value="COMPAT16"/> - <xs:enumeration value="DISPOSABLE"/> - <xs:enumeration value="TE"/> - <xs:enumeration value="VER"/> - <xs:enumeration value="UI"/> - <xs:enumeration value="BIN"/> - <xs:enumeration value="FV"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - <xs:attribute name="GUID" use="optional" - type="RegistryFormatGuid"/> - <xs:attribute name="SupArchList" type="ArchListType" - use="optional"/> - <xs:attribute name="SupModList" type="ModuleListType" - use="optional"/> - <xs:attribute name="FeatureFlag" type="xs:normalizedString" - use="optional"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element minOccurs="0" maxOccurs="unbounded" name="AsBuilt"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - - <xs:element minOccurs="0" maxOccurs="unbounded" name="PatchPcdValue"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> The element is the - Patchable PCD Value that was used during the build. - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="1" - name="TokenSpaceGuidValue" type="RegistryFormatGuid"/> - <xs:element minOccurs="1" maxOccurs="1" name="PcdCName" - type="xs:NCName"/> - <xs:element minOccurs="1" maxOccurs="1" name="Token"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> The minLength of 3 is - required to handle the "0x" prefix to the hex number. - </xs:documentation> - </xs:annotation> - <xs:simpleType> - <xs:restriction base="HexNumber"> - <xs:minLength value="3"/> - <xs:maxLength value="10"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element minOccurs="1" maxOccurs="1" name="DatumType" - type="PcdDatumTypes"/> - <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This field is required - if the Pcd Datum Type is VOID* </xs:documentation> - <xs:documentation xml:lang="en-us"> The minLength of 3 is - required to handle the "0x" prefix to the hex number. - </xs:documentation> - </xs:annotation> - <xs:simpleType> - <xs:restriction base="HexNumber"> - <xs:minLength value="3"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element minOccurs="1" maxOccurs="1" name="Value" - type="xs:normalizedString"/> - <xs:element minOccurs="1" maxOccurs="1" name="Offset"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> The minLength of 3 is - required to handle the "0x" prefix to the hex number. - </xs:documentation> - </xs:annotation> - <xs:simpleType> - <xs:restriction base="HexNumber"> - <xs:minLength value="3"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element ref="HelpText" minOccurs="0" - maxOccurs="unbounded"/> - <xs:element minOccurs="0" maxOccurs="unbounded" - name="PcdError"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> Error information - implemented by the module. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:choice> - <xs:element minOccurs="0" maxOccurs="1" name="ValidValueList"> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:normalizedString"> - <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element minOccurs="0" maxOccurs="1" name="ValidValueRange" type="xs:normalizedString"/> - <xs:element minOccurs="0" maxOccurs="1" name="Expression" type="xs:normalizedString"/> - </xs:choice> - <xs:element minOccurs="1" maxOccurs="1" name="ErrorNumber"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> The minLength of 3 is - required to handle the "0x" prefix to the hex number. - </xs:documentation> - </xs:annotation> - <xs:simpleType> - <xs:restriction base="HexNumber"> - <xs:minLength value="3"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element minOccurs="0" maxOccurs="unbounded" - name="ErrorMessage"> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:string"> - <xs:attribute name="Lang" type="xs:language" default="en-us" - use="optional"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - - <xs:element minOccurs="0" maxOccurs="unbounded" name="PcdExValue"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> The element is the - DynamicEx PCD Value that was used during the build. - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="1" - name="TokenSpaceGuidValue" type="RegistryFormatGuid"/> - <xs:element minOccurs="1" maxOccurs="1" name="Token"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> The minLength of 3 is - required to handle the "0x" prefix to the hex number. - </xs:documentation> - </xs:annotation> - <xs:simpleType> - <xs:restriction base="HexNumber"> - <xs:minLength value="3"/> - <xs:maxLength value="10"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element minOccurs="1" maxOccurs="1" name="DatumType" - type="PcdDatumTypes"/> - <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This field is required - if the Pcd Datum Type is VOID* </xs:documentation> - </xs:annotation> - <xs:simpleType> - <xs:restriction base="HexNumber"> - <xs:minLength value="3"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element minOccurs="1" maxOccurs="1" name="Value" - type="xs:normalizedString"/> - <xs:element ref="HelpText" minOccurs="0" - maxOccurs="unbounded"/> - <xs:element minOccurs="0" maxOccurs="unbounded" - name="PcdError"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> Error information - implemented by the module. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:choice> - <xs:element minOccurs="0" maxOccurs="1" name="ValidValueList"> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:normalizedString"> - <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element minOccurs="0" maxOccurs="1" name="ValidValueRange" type="xs:normalizedString"/> - <xs:element minOccurs="0" maxOccurs="1" name="Expression" type="xs:normalizedString"/> - </xs:choice> - <xs:element minOccurs="1" maxOccurs="1" name="ErrorNumber"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> The minLength of 3 is - required to handle the "0x" prefix to the hex number. - </xs:documentation> - </xs:annotation> - <xs:simpleType> - <xs:restriction base="HexNumber"> - <xs:minLength value="3"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element minOccurs="0" maxOccurs="unbounded" - name="ErrorMessage"> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:string"> - <xs:attribute name="Lang" type="xs:language" default="en-us" - use="optional"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - - <xs:element minOccurs="0" maxOccurs="1" name="LibraryInstances"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This is the actual - library instance that was used to link against the module. - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="unbounded" name="GUID"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This GUID and the - Version attribute uniquely identify the actual Library - Instance linked in this module. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="RegistryFormatGuid"> - <xs:attribute name="Version" type="xs:decimal" - use="required"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This value, along with - the GUID, is used to uniquely identify this object. - </xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - - <xs:element minOccurs="0" maxOccurs="unbounded" name="BuildFlags"> - <xs:complexType mixed="true"> - <xs:simpleContent> - <xs:annotation> - <xs:documentation xml:lang="en-us"> Any description of OS, - Tool, and flags for the individual tool can go in this - section. </xs:documentation> - </xs:annotation> - <xs:extension base="xs:string"> - <xs:anyAttribute processContents="lax"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <!-- End of AsBuilt --> - <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - </xs:element> - - </xs:sequence> - </xs:complexType> - </xs:element> - <!-- End of BinaryFiles Section --> - - <xs:element minOccurs="0" maxOccurs="1" name="PackageDependencies"> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="unbounded" name="Package"> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="0" maxOccurs="unbounded" name="Description"> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:string"> - <xs:attribute name="Lang" type="xs:language" default="en-us" - use="optional"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element minOccurs="1" maxOccurs="1" name="GUID"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This GUID and the Version attribute - uniquely identify Package that this Module depends on. - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="RegistryFormatGuid"> - <xs:attribute name="Version" type="xs:decimal" use="optional"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="SupArchList" type="ArchListType" use="optional"/> - <xs:attribute name="SupModList" type="ModuleListType" use="optional"/> - <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <!-- End of PackageDependencies --> - - <xs:element minOccurs="0" maxOccurs="1" name="Guids"> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="unbounded" name="GuidCName"> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/> - <xs:element minOccurs="0" maxOccurs="1" name="GUID" type="RegistryFormatGuid"/> - <xs:element minOccurs="0" maxOccurs="1" name="VariableName" - type="xs:normalizedString"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> Only valid for Variable GUID types. </xs:documentation> - <xs:documentation> This can be either a Hex Array or C string in unicode - format: L"string" Data. </xs:documentation> - </xs:annotation> - </xs:element> - <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - <xs:attribute name="Usage" use="required"> - <xs:simpleType> - <xs:restriction base="xs:NCName"> - <xs:enumeration value="CONSUMES"> - <xs:annotation> - <xs:documentation xml:lang="en-us">The module does not install - the GUID, and the GUID must be present for the module to - execute. </xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="SOMETIMES_CONSUMES"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> The module does not install - the GUID, however, the GUID will be used if it is present. - </xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="PRODUCES"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> The module always installs - the GUID. </xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="SOMETIMES_PRODUCES"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> The Module will install the - GUID under certain execution paths. </xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="UNDEFINED"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> The package creator knows - that a GUID is used, but does not know how it is used. - </xs:documentation> - </xs:annotation> - </xs:enumeration> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - <xs:attribute name="GuidType" type="GuidListType" use="required"/> - <xs:attribute name="SupArchList" type="ArchListType" use="optional"/> - <xs:attribute name="SupModList" type="ModuleListType" use="optional"/> - <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <!-- End of Guids Section --> - - <xs:element minOccurs="0" maxOccurs="1" name="Protocols"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> A listing of protocols required or produced by this module. - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="unbounded" name="Protocol" nillable="true"> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/> - <xs:element minOccurs="0" maxOccurs="1" name="GUID" type="RegistryFormatGuid"/> - <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - <xs:attribute name="Usage" use="required"> - <xs:simpleType> - <xs:restriction base="xs:NCName"> - <xs:enumeration value="PRODUCES"/> - <xs:enumeration value="SOMETIMES_PRODUCES"/> - <xs:enumeration value="CONSUMES"/> - <xs:enumeration value="SOMETIMES_CONSUMES"/> - <xs:enumeration value="TO_START"/> - <xs:enumeration value="BY_START"/> - <xs:enumeration value="UNDEFINED"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - <xs:attribute name="Notify" type="xs:boolean" use="optional"/> - <xs:attribute name="SupArchList" type="ArchListType" use="optional"/> - <xs:attribute name="SupModList" type="ModuleListType" use="optional"/> - <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <!-- End of Protocols Section --> - - <xs:element minOccurs="0" maxOccurs="1" name="PPIs"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> A listing of PPIs required or produced by this module. - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="unbounded" name="Ppi" nillable="true"> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/> - <xs:element minOccurs="0" maxOccurs="1" name="GUID" type="RegistryFormatGuid"/> - <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - <xs:attribute name="Usage" use="required"> - <xs:simpleType> - <xs:restriction base="xs:NCName"> - <xs:enumeration value="PRODUCES"/> - <xs:enumeration value="SOMETIMES_PRODUCES"/> - <xs:enumeration value="CONSUMES"/> - <xs:enumeration value="SOMETIMES_CONSUMES"/> - <xs:enumeration value="UNDEFINED"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - <xs:attribute name="Notify" type="xs:boolean" use="optional"/> - <xs:attribute name="SupArchList" type="ArchListType" use="optional"/> - <xs:attribute name="SupModList" type="ModuleListType" use="optional"/> - <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <!-- End of PPIs Section --> - - <xs:element minOccurs="0" maxOccurs="1" name="Externs"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> These elements specify additional information about the - module. This area may be used by tools to generate code. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="unbounded" name="Extern"> - <xs:complexType> - <xs:sequence> - <xs:choice minOccurs="1"> - <xs:sequence> - <xs:element minOccurs="0" maxOccurs="1" name="EntryPoint" - type="xs:NCName"/> - <xs:element minOccurs="0" maxOccurs="1" name="UnloadImage" - type="xs:NCName"/> - </xs:sequence> - <xs:sequence> - <xs:element minOccurs="0" maxOccurs="1" name="Constructor" - type="xs:NCName"/> - <xs:element minOccurs="0" maxOccurs="1" name="Destructor" - type="xs:NCName"/> - </xs:sequence> - </xs:choice> - <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/> - </xs:sequence> - <xs:attribute name="SupArchList" type="ArchListType" use="optional"/> - <xs:attribute name="SupModList" type="ModuleListType" use="optional"/> - <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <!-- End of Externs Section --> - - <xs:element minOccurs="0" maxOccurs="1" name="PcdCoded"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This section describes how a platform is coded with respect - to the platform configuration knobs. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdEntry"> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/> - <xs:element minOccurs="1" maxOccurs="1" name="TokenSpaceGuidCName" - type="xs:NCName"/> - <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue" - type="xs:normalizedString"/> - <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - <xs:attribute name="PcdItemType" type="PcdItemTypes" use="required"/> - <xs:attribute name="PcdUsage" use="required"> - <xs:simpleType> - <xs:restriction base="xs:NCName"> - <xs:enumeration value="PRODUCES"/> - <xs:enumeration value="SOMETIMES_PRODUCES"/> - <xs:enumeration value="CONSUMES"/> - <xs:enumeration value="SOMETIMES_CONSUMES"/> - <xs:enumeration value="UNDEFINED"/> - </xs:restriction> - </xs:simpleType> - - - </xs:attribute> - <xs:attribute name="SupArchList" type="ArchListType" use="optional"/> - <xs:attribute name="SupModList" type="ModuleListType" use="optional"/> - <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <!-- End of PcdCoded Section --> - - <xs:element minOccurs="0" maxOccurs="unbounded" name="PeiDepex"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This is the PEI dependency expression for a Dependency - Section. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="Expression" type="xs:string" minOccurs="1" maxOccurs="1"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - </xs:annotation> - </xs:element> - <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/> - </xs:sequence> - <xs:attribute name="SupArchList" type="ArchListType" use="optional"/> - <xs:attribute name="SupModList" type="ModuleListType" use="optional"/> - <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/> - </xs:complexType> - </xs:element> - <!-- End of PeiDepex Section --> - - <xs:element minOccurs="0" maxOccurs="unbounded" name="DxeDepex"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This is the DXE dependency expression for a Dependency - Section. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="Expression" type=" xs:string " minOccurs="1" maxOccurs="1"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - </xs:annotation> - </xs:element> - <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/> - </xs:sequence> - <xs:attribute name="SupArchList" type="ArchListType" use="optional"/> - <xs:attribute name="SupModList" type="ModuleListType" use="optional"/> - <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/> - </xs:complexType> - </xs:element> - <!-- End of DxeDepex Section --> - - <xs:element minOccurs="0" maxOccurs="unbounded" name="SmmDepex"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This is the SMM dependency expression for a Dependency - Section. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element name="Expression" type=" xs:string " minOccurs="1" maxOccurs="1"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - </xs:annotation> - </xs:element> - <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/> - </xs:sequence> - <xs:attribute name="SupArchList" type="ArchListType" use="optional"/> - <xs:attribute name="SupModList" type="ModuleListType" use="optional"/> - <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/> - </xs:complexType> - </xs:element> - <!-- End of SmmDepex Section --> - - - <xs:element minOccurs="0" maxOccurs="1" name="MiscellaneousFiles"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This section is used to provide comments and/or list - auxiliary files, such as pdb or map files. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="0" maxOccurs="unbounded" name="Description"> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:string"> - <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional" - /> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This is the path and filename location within - the ZIP file. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:anyURI"> - <xs:attribute name="Executable" type="xs:boolean" default="false" - use="optional"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> If true, used by installation - tools to ensure that a file that must be executable has the - correct properties to permit execution. </xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <!-- End of Module Surface Area Misc Section --> - - <xs:element minOccurs="0" maxOccurs="unbounded" name="UserExtensions"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This section is used for any processing instructions that - may be custom to the content provided by the distribution that are common to module. </xs:documentation> - <xs:documentation xml:lang="en-us"> The content is vendor specific. </xs:documentation> - <xs:documentation xml:lang="en-us"> The content can be plain text as well as any user-defined, - properly formatted XML structure. </xs:documentation> - </xs:annotation> - <xs:complexType mixed="true"> - <xs:attribute name="UserId" type="xs:NCName" use="required"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="Identifier" type="xs:string" use="required"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This can be any string used to differentiate or - identify this section from other UserExtensions sections. </xs:documentation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:anyAttribute processContents="lax"/> - </xs:complexType> - </xs:element> - <!-- End of Module Surface Area UserExtensions Section --> - - </xs:sequence> - <xs:attribute name="BinaryModule" type="xs:boolean" default="false" use="optional"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:complexType> - - </xs:element> - <!-- End of the ModuleSurfaceArea element. --> - - <xs:element name="Tools"> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="0" maxOccurs="1" name="Header"> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="1" maxOccurs="1" name="Name" type="xs:normalizedString"> - <xs:annotation> - <xs:documentation xml:lang="en-us">This is the User Interface Name for this Tools - Distribution.</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element minOccurs="0" maxOccurs="1" name="Copyright" type="xs:string"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This is only required if the Copyright is - different from the Distribution Package copyright. </xs:documentation> - </xs:annotation> - </xs:element> - <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This is only required if the License is - different from the Distribution Package license. </xs:documentation> - </xs:annotation> - </xs:element> - <xs:element minOccurs="0" maxOccurs="1" name="Abstract"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This is only required if the Abstract is - different from the Distribution Package Abstract. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:normalizedString"> - <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:element minOccurs="0" maxOccurs="1" name="Description"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This is only required if the Description is - different from the Distribution Package Description. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:string"> - <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This is the path and filename location within the ZIP file. - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:anyURI"> - <xs:attribute name="OS" type="SupportedOs" use="optional"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This is required for tools that execute; it - should not be used for configuration files. </xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="Executable" type="xs:boolean" default="false" use="optional"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> If true, used by installation tools to - ensure that a file that must be executable has the correct properties to - permit execution. </xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <!-- End of the Tools element. --> - - <xs:element name="MiscellaneousFiles"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This section contains a list of files that are not part of the code - distributed with modules, packages or tools. </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="0" maxOccurs="1" name="Header"> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="0" maxOccurs="1" name="Name" type="xs:normalizedString"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> The User interface name for this content. - </xs:documentation> - </xs:annotation> - </xs:element> - <xs:element minOccurs="0" maxOccurs="1" name="Copyright" type="xs:string"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This is only required if the Copyright is - different from the Distribution Package Copyright. </xs:documentation> - </xs:annotation> - </xs:element> - <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This is only required if the License is - different from the Distribution Package License. </xs:documentation> - </xs:annotation> - </xs:element> - <xs:element minOccurs="0" maxOccurs="1" name="Abstract" type="xs:normalizedString"/> - <xs:element minOccurs="0" maxOccurs="unbounded" name="Description"> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:string"> - <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional" - /> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element minOccurs="0" maxOccurs="unbounded" name="Filename"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This is the path and filename location within the ZIP file. - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:anyURI"> - <xs:attribute name="Executable" type="xs:boolean" default="false" use="optional"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> If true, used by installation tools to - ensure that a file that must be executable has the correct properties to - permit execution. </xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <!-- End of the Misc element. --> - - <xs:element name="UserExtensions"> - <xs:complexType mixed="true"> - <xs:sequence> - <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - <xs:attribute name="UserId" type="xs:NCName" use="required"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="Identifier" type="xs:string" use="optional"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This can be any string used to differentiate or identify this - section from other UserExtensions sections. </xs:documentation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:anyAttribute processContents="lax"/> - </xs:complexType> - </xs:element> - <!-- The following elsements are common definitions used with the ref attribute for elements. --> - - <xs:element name="HelpText"> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:string"> - <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - - <!-- The following attribute groups are used in various elements above. --> - - <xs:attributeGroup name="SupportedArchMod"> - <xs:attribute name="SupArchList" type="ArchListType" use="optional"/> - <xs:attribute name="SupModList" type="ModuleListType" use="optional"/> - </xs:attributeGroup> - - <!-- The following data types are used to restrict content. --> - - <xs:simpleType name="ArchListType"> - <xs:list itemType="ArchTypes"/> - </xs:simpleType> - - <xs:simpleType name="ArchTypes"> - <xs:restriction base="xs:NCName"> - <xs:enumeration value="IA32"/> - <xs:enumeration value="X64"/> - <xs:enumeration value="IPF"/> - <xs:enumeration value="EBC"/> - <xs:enumeration value="ARM"/> - <xs:pattern value="([A-Z])([a-zA-Z0-9])*"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> Any processor architecture not listed above. The Architecture - must be a target architecture of one or more compiler tool chains. </xs:documentation> - </xs:annotation> - </xs:pattern> - </xs:restriction> - </xs:simpleType> - - - <xs:simpleType name="FamilyTypes"> - <xs:restriction base="xs:NCName"> - <xs:enumeration value="MSFT"/> - <xs:enumeration value="GCC"/> - <xs:pattern value="[A-Z][a-zA-Z0-9]*"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> Any other family of build utilities for which compiler tools - exist. </xs:documentation> - </xs:annotation> - </xs:pattern> - </xs:restriction> - </xs:simpleType> - - <xs:simpleType name="GuidListType"> - <xs:list itemType="GuidTypes"/> - </xs:simpleType> - - <xs:simpleType name="GuidTypes"> - <xs:restriction base="xs:NCName"> - <xs:enumeration value="Event"/> - <xs:enumeration value="File"/> - <xs:enumeration value="FV"/> - <xs:enumeration value="GUID"/> - <xs:enumeration value="HII"/> - <xs:enumeration value="Hii"/> - <xs:enumeration value="HOB"/> - <xs:enumeration value="SystemTable"/> - <xs:enumeration value="TokenSpaceGuid"/> - <xs:enumeration value="Variable"/> - <xs:enumeration value="UNDEFINED"/> - </xs:restriction> - </xs:simpleType> - - <xs:simpleType name="HexNumber"> - <xs:restriction base="xs:hexBinary"> - <xs:pattern value="0x([a-fA-F0-9])+"/> - </xs:restriction> - </xs:simpleType> - - <xs:simpleType name="Md5Sum"> - <xs:restriction base="xs:normalizedString"> - <xs:pattern value="[a-zA-Z0-9]{32}"/> - </xs:restriction> - </xs:simpleType> - - <xs:simpleType name="ModuleListType"> - <xs:list itemType="ModuleTypes"/> - </xs:simpleType> - - <xs:simpleType name="ModuleTypes"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> The following module types are defined by specifications. </xs:documentation> - <xs:documentation xml:lang="en-us"> Module types for components and libraries defined for this distribution - mechanism. </xs:documentation> - </xs:annotation> - <xs:restriction base="xs:NCName"> - <xs:enumeration value="BASE "> - <xs:annotation> - <xs:documentation xml:lang="en-us"> Use of this module is not restricted. </xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="DXE_CORE"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This module is only applicable to the DXE core. - </xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="DXE_DRIVER"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This module is only applicable to a DXE driver. - </xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="DXE_RUNTIME_DRIVER"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This module is only applicable to a DXE runtime driver. - </xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="DXE_SAL_DRIVER"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This module is only applicable to an IPF DXE runtime driver. - </xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="DXE_SMM_DRIVER"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This module is only applicable to a DXE SMM driver. - </xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="PEI_CORE"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This module is only applicable to the PEI core. - </xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="PEIM"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This module is only valid for PEI modules. </xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="SEC"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This module is only applicable to Security phase. - </xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="UEFI_DRIVER"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This module is only valid for UEFI drivers. </xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="UEFI_RUNTIME_DRIVER"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This module is only valid for UEFI runtime - drivers.</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="UEFI_APPLICATION"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This module is only valid for UEFI applications. - </xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="SMM_CORE"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This module is only applicable to the SMM - core.</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="USER_DEFINED"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This content is restricted to a specific implementation. - </xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="UNDEFINED"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:pattern value="([A-Z])([a-zA-Z0-9])*"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> This pattern has been added for use in a module lists - for - future expansion. </xs:documentation> - </xs:annotation> - </xs:pattern> - </xs:restriction> - </xs:simpleType> - - <xs:simpleType name="PcdDatumTypes"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> The following data types are defined by the PCD specification (or PCD - section of the UEFI/PI specifications.) </xs:documentation> - </xs:annotation> - <xs:restriction base="xs:normalizedString"> - <xs:enumeration value="UINT8"/> - <xs:enumeration value="UINT16"/> - <xs:enumeration value="UINT32"/> - <xs:enumeration value="UINT64"/> - <xs:enumeration value="BOOLEAN"/> - <xs:enumeration value="VOID*"/> - </xs:restriction> - </xs:simpleType> - - <xs:simpleType name="PcdItemListType"> - <xs:list itemType="PcdItemTypes"/> - </xs:simpleType> - - <xs:simpleType name="PcdItemTypes"> - <xs:restriction base="xs:NCName"> - <xs:enumeration value="FeaturePcd"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="FixedPcd"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> The Fixed PCD is a #define value that is set at build time. - </xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="PatchPcd"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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.</xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="Pcd"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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.) </xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="PcdEx"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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.) </xs:documentation> - </xs:annotation> - </xs:enumeration> - </xs:restriction> - </xs:simpleType> - - <xs:simpleType name="RegistryFormatGuid"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> A GUID must contain five different Hexadecimal character sets that are - separated by a dash (-) character. </xs:documentation> - </xs:annotation> - <xs:restriction base="xs:string"> - <xs:pattern value="\s*[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\s*"/> - </xs:restriction> - </xs:simpleType> - - <xs:simpleType name="SupportedOs"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> 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. </xs:documentation> - </xs:annotation> - <xs:restriction base="xs:string"> - <xs:enumeration value="Win32"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> For Windows 2003, Windows XP and Windows Vista. - </xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="Win64"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> For Windows 2003, Windows XP and Windows Vista. - </xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="RedHat32"/> - <xs:enumeration value="RedHat64"/> - <xs:enumeration value="SuSE32"/> - <xs:enumeration value="SuSE64"/> - <xs:enumeration value="Linux32"/> - <xs:enumeration value="Linux64"/> - <xs:enumeration value="OS/X32"/> - <xs:enumeration value="OS/X64"/> - <xs:enumeration value="Generic"/> - <xs:enumeration value="GenericWin"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> Typically, this is used for Windows Batch files. - </xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:enumeration value="GenericNix"> - <xs:annotation> - <xs:documentation xml:lang="en-us"> Typically use for shell scripts - valid for any Linux and Mac - OS/X. </xs:documentation> - </xs:annotation> - </xs:enumeration> - <xs:pattern value="[a-zA-Z]([a-zA-Z0-9])*"/> - </xs:restriction> - </xs:simpleType> - -</xs:schema> +<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Filename: DistributionPackage.xsd
+
+Copyright (c) 2008 - 2012, Intel Corporation. All rights reserved.
+
+This program and the accompanying materials are licensed and made available
+under the terms and conditions of the BSD License which may be found at
+ http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
+ targetNamespace="http://www.uefi.org/2012/1.0" xmlns="http://www.uefi.org/2012/1.0">
+ <xs:element name="DistributionPackage">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This schema defines the UEFI/PI Distribution Package description (PKG)
+ file. It describes the content of:</xs:documentation>
+ <xs:documentation xml:lang="en-us"> 1) Package descriptions with definitions and headers.</xs:documentation>
+ <xs:documentation xml:lang="en-us"> 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.) </xs:documentation>
+ <xs:documentation xml:lang="en-us"> 3) The distribution of custom tools used to modify the binary images to
+ create UEFI/PI compliant images. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> 4) Finally, it can be used to distribute other miscellaneous content
+ that is not specific to UEFI/PI images. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> The Package Surface Area describes the content of packages, while the
+ Module Surface Area provides information relevant to source and/or binary distributions.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="DistributionHeader" minOccurs="1" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This header contains (legal) information usually required
+ for distributing both binary and/or source code. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element ref="PackageSurfaceArea" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The list of packages in this distribution. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Packages are groups of files and/or modules that are similar
+ in nature.</xs:documentation>
+ <xs:documentation xml:lang="en-us"> Packages are uniquely identified by a package GUID and a
+ package version. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> A package can declare public mappings of C names to GUID
+ values. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> A package can provide header files for library classes
+ and/or other industry standard definitions. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> A package can also declare public mappings of platform
+ configuration database (PCD) "knobs" to control features and operation of modules
+ within a platform. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Finally, a package lists the library instances and/or
+ modules that are provided in a distribution package. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element ref="ModuleSurfaceArea" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> UEFI/PI compliant libraries and modules are uniquely
+ identified by the Module's GUID and version number. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element ref="Tools" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Tools in this section can:</xs:documentation>
+ <xs:documentation xml:lang="en-us"> 1) Parse build meta-data files to create source code files
+ and build scripts. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> 2) Modify image files to conform to UEFI/PI specifications. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> 3) Generate binary files from certain types of text/unicode
+ files. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> 4) Generate PCI Option Roms or Firmware Device images. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> 5) Implement external encoding/decoding/signature/GUIDed
+ tools. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> 6) Distribution Package create/install/remove tools.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element ref="MiscellaneousFiles" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element ref="UserExtensions" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+
+ </xs:complexType>
+ </xs:element>
+ <!-- End of the DistributionPackage Description -->
+
+ <xs:element name="DistributionHeader">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="Name">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the User Interface Name for this Distribution
+ Package. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Each Distribution Package is uniquely identified by it's
+ GUID and Version number. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:normalizedString">
+ <xs:attribute name="BaseName" type="xs:NMTOKEN" use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> White space and special characters (dash and
+ underscore characters may be used) are not permitted in this name.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="GUID">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This 128-bit GUID and the Version attribute uniquely
+ identify this Distribution Package. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> 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.) </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="RegistryFormatGuid">
+ <xs:attribute name="Version" type="xs:decimal" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This value, along with the GUID, is used to
+ uniquely identify this object. The higher the number, the more recent the
+ content. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="Vendor" type="xs:normalizedString">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A string identifying who created this distribution package.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="Date" type="xs:dateTime">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Copyright">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="License">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Abstract">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A one line description of the Distribution Package.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:normalizedString">
+ <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="Signature" type="Md5Sum">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="XmlSpecification" type="xs:decimal" default="1.1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This version of this XML Schema is 1.1 </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Changes to 1.1 from 1.0 </xs:documentation>
+ <xs:documentation xml:lang="en-us"> #1 Updated to present date and new version which is
+ important to reflect the present state of the matter</xs:documentation>
+ <xs:documentation xml:lang="en-us"> #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</xs:documentation>
+ <xs:documentation xml:lang="en-us">#3 Allow for inclusion of ARM and future architecture
+ types</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="ReadOnly" type="xs:boolean" default="false" use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> If set to true, all content within this Distribution Package
+ should NOT be modified. The default permits modification of all content. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="RePackage" type="xs:boolean" default="false" use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> If set to true, then the content can be repackaged into another
+ distribution package. The default prohibits repackaging the Distribution content.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of the DistributionHeader element. -->
+
+ <xs:element name="PackageSurfaceArea">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A package is a collection of related objects - Includes, Libraries and
+ Modules. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> 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.)
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+
+ <xs:element minOccurs="1" maxOccurs="1" name="Header">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="Name">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the User Interface Name for this
+ package. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:normalizedString">
+ <xs:attribute name="BaseName" type="xs:NMTOKEN" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is a single word BaseName
+ of the package. This BaseName can be used by tools as a keyword
+ and for directory/file creation. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="GUID">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This GUID and the Version attribute uniquely
+ identify a given package. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="RegistryFormatGuid">
+ <xs:attribute name="Version" type="xs:decimal" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This value, along with the GUID,
+ is used to uniquely identify this object. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Copyright">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> If the package requires a different copyright
+ than the distribution package, this element can list one or more copyright
+ lines. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
+ />
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="License">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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.) </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
+ />
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Abstract">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A one line description of this package.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:normalizedString">
+ <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
+ />
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
+ />
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="PackagePath" type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This element is the location (in the ZIP file)
+ for the root directory of a package. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageSurfaceArea Header element. -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="GUID">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This GUID and the Version attribute uniquely
+ identify the Package that this Package was copied from. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="RegistryFormatGuid">
+ <xs:attribute name="Version" type="xs:decimal" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This value, along with the GUID,
+ is used to uniquely identify the package that this package was
+ cloned from. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageSurfaceArea ClonedFrom element. -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="LibraryClassDeclarations">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="LibraryClass">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile" type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="RecommendedInstance">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="GUID">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This GUID and the
+ Version attribute uniquely identify the Recommended Library
+ Instance. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="RegistryFormatGuid">
+ <xs:attribute name="Version" type="xs:decimal"
+ use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="Keyword" type="xs:NCName" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The single word name of the Library
+ Class that module developers will use to identify a library class
+ dependency. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attributeGroup ref="SupportedArchMod"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageSurfaceArea LibraryClassDeclarations element. -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="IndustryStandardIncludes">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="IndustryStandardHeader">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile" type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The package relative path and
+ filename (in the content zip file) of the industry standard include
+ file. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageSurfaceArea IndustryStdIncludes element. -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="PackageIncludes">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> All top level header files that are included by a package
+ that are not listed above. They cannot be:</xs:documentation>
+ <xs:documentation xml:lang="en-us"> 1) Local to a module (module specific.) </xs:documentation>
+ <xs:documentation xml:lang="en-us"> 2) An industry standard header. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> 3) A library class header. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="PackageHeader">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the Package relative path
+ and filename location within the content ZIP file.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:anyURI">
+ <xs:attributeGroup ref="SupportedArchMod"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageSurfaceArea PackageIncluces element. -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="Modules">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="ModuleSurfaceArea" minOccurs="1" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section lists the Module Surface Area for
+ all modules provided with this package. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageSurfaceArea Modules element. -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="GuidDeclarations">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section defines the mapping of GUID C names to GUID
+ values as a Registry Format GUID. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Modules that use these GUIDs must specify their dependency
+ on this package. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Individual GUID Declarations </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="GuidValue"
+ type="RegistryFormatGuid"/>
+ <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="UiName" type="xs:normalizedString" use="optional"/>
+ <xs:attribute name="GuidTypes" type="GuidListType" use="optional"/>
+ <xs:attributeGroup ref="SupportedArchMod"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageSurfaceArea GuidDeclarations element. -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="ProtocolDeclarations">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section defines the mapping of Protocol C names to GUID
+ values as a Registry Format GUID. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Modules that use these Protocols must specify their
+ dependency on this package. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Individual Protocol Declarations
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="GuidValue"
+ type="RegistryFormatGuid"/>
+ <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="UiName" type="xs:normalizedString" use="optional"/>
+ <xs:attributeGroup ref="SupportedArchMod"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageSurfaceArea ProtocolDeclarations element. -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="PpiDeclarations">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section defines the mapping of Ppi C names to GUID
+ values as a Registry Format GUID. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Modules that use these Ppis must specify their dependency on
+ this package. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Individual PPI Declarations </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="GuidValue"
+ type="RegistryFormatGuid"/>
+ <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="UiName" type="xs:normalizedString" use="optional"/>
+ <xs:attributeGroup ref="SupportedArchMod"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageSurfaceArea PpiDeclarations element. -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="PcdDeclarations">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section is used to declare platform configuration knobs
+ that are defined by this package. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Modules that use these PCD values must specify their
+ dependency on this package. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdEntry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="TokenSpaceGuidCname"
+ type="xs:NCName">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="Token">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Specifies the 32-bit token value for
+ this PCD Entry. The Token number must be unique to the Token Space
+ that declares the PCD. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> The minLength of 3 is required to
+ handle the "0x" prefix to the hex number. </xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="HexNumber">
+ <xs:minLength value="3"/>
+ <xs:maxLength value="10"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDatumTypes">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="ValidUsage" type="PcdItemListType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="DefaultValue"
+ type="xs:normalizedString"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> The minLength of 3 is required to
+ handle the "0x" prefix to the hex number. </xs:documentation>
+
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="HexNumber">
+ <xs:minLength value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Prompt">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-US"> This entry contains prompt
+ information, that may used by tools to assist platform integrators
+ with choosing the correct values </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Lang" type="xs:language" default="en-us"
+ use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
+
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="PcdError">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice minOccurs="1" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> One of the following
+ types of comparisons, which must be able to evaluate to
+ either true or false. </xs:documentation>
+ </xs:annotation>
+ <xs:element minOccurs="0" maxOccurs="1" name="ValidValueList">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The PCD Value must be
+ space separated list of values. Values are restricted to the
+ data type of this PCD. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:normalizedString">
+ <xs:attribute name="Lang" type="xs:language" use="optional"
+ />
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="ValidValueRange"
+ type="xs:normalizedString">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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.</xs:documentation>
+ <xs:documentation xml:lang="en-us"> LValue (op RValue)+
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="Expression"
+ type="xs:normalizedString">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A in-fix logical
+ expression using C style logical operators.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:choice>
+ <xs:element minOccurs="1" maxOccurs="1" name="ErrorNumber">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A hexadecimal value for
+ the error message as defined by specifications. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> The minLength of 3 is
+ required to handle the "0x" prefix to the hex number. </xs:documentation>
+
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="HexNumber">
+ <xs:minLength value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="ErrorMessage">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This string should be
+ defined by specifications. There are pre-defined error
+ number ranges in the UEFI/PI specificaiton.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Lang" type="xs:language" default="en-us"
+ use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attributeGroup ref="SupportedArchMod"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageSurfaceArea PcdDeclarations element. -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="PcdRelationshipChecks">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section is used to describe any PCD interdependencies
+ or relationships. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdCheck" type="xs:normalizedString">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> LValue (op RValue)+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="MiscellaneousFiles">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section contains files that are not part of the code
+ distributed with this package. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="1" name="Copyright" type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Only required if different from the Package
+ Copyright. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Only required if different from the Package
+ License. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="Abstract" type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A one line description of this section's
+ content. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Description" type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A complete description of the files in this
+ section. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the PackagePath relative path and
+ filename location within the ZIP file. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:anyURI">
+ <xs:attribute name="Executable" type="xs:boolean" default="false"
+ use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> If true, used by installation
+ tools to ensure that a file that must be executable has the
+ correct properties to permit execution. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageSurfaceArea Misc element. -->
+
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="UserExtensions">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:sequence>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ <xs:attribute name="UserId" type="xs:NCName" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is a single word identifier for grouping
+ similar content that does not fit into previously defined sections or other sections
+ of the Distribution. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="Identifier" type="xs:string" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This can be used to differentiate multiple sections
+ with a grouping. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> 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.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:anyAttribute processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageSurfaceArea UserExtensions element. -->
+
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of the PackageSurfaceArea element. -->
+
+ <xs:element name="ModuleSurfaceArea">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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.)
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+
+ <xs:element minOccurs="1" maxOccurs="1" name="Header">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="Name">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the User Interface Name for this Module.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:normalizedString">
+ <xs:attribute name="BaseName" type="xs:NMTOKEN" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is a single word BaseName
+ that will be used to create a module meta-data file. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> This name should also be used to
+ create output file names and directories. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="GUID">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This GUID and the Version attribute uniquely
+ identify a given Module. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="RegistryFormatGuid">
+ <xs:attribute name="Version" type="xs:decimal" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This value, along with the GUID,
+ is used to uniquely identify this object. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Copyright">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is only required if the Copyright is
+ different from either the Package or Distribution copyright. Multiple copyright
+ lines are permitted within this section. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
+ />
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="License">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is only required if the license is
+ different from either the Package or Distribution license. Multiple licenses are
+ permitted within this section. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
+ />
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Abstract">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A brief text description of the module.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:normalizedString">
+ <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
+ />
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A complete description of the module contents
+ and/or features including a description of the updates since the previous module
+ release. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
+ />
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of Module Surface Area Header Section -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="ModuleProperties">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> List general information about a module, including the
+ Supported Architectures, this module's type, specifications the module is coded against, and
+ other informational content. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="ModuleType" type="ModuleTypes">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> One of the Enumerated module types that limit
+ the use of a module. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="Path" type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="PcdIsDriver">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This element is only required for the PEIM that
+ produces the PCD PPI or the DXE Driver that produces the PCD Protocol.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="PEI_PCD_DRIVER"/>
+ <xs:enumeration value="DXE_PCD_DRIVER"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+
+ <xs:element minOccurs="0" maxOccurs="1" name="UefiSpecificationVersion" type="xs:decimal"/>
+
+ <xs:element minOccurs="0" maxOccurs="1" name="PiSpecificationVersion" type="xs:decimal"/>
+
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Specification">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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.)
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:NCName">
+ <xs:attribute name="Version" type="xs:decimal" use="required"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="BootMode">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs="0">
+ <xs:element minOccurs="1" maxOccurs="1" name="SupportedBootModes">
+ <xs:simpleType>
+ <xs:list>
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="FULL"/>
+ <xs:enumeration value="MINIMAL"/>
+ <xs:enumeration value="NO_CHANGE"/>
+ <xs:enumeration value="DIAGNOSTICS"/>
+ <xs:enumeration value="DEFAULT"/>
+ <xs:enumeration value="S2_RESUME"/>
+ <xs:enumeration value="S3_RESUME"/>
+ <xs:enumeration value="S4_RESUME"/>
+ <xs:enumeration value="S5_RESUME"/>
+ <xs:enumeration value="FLASH_UPDATE"/>
+ <xs:enumeration value="RECOVERY_FULL"/>
+ <xs:enumeration value="RECOVERY_MINIMAL"/>
+ <xs:enumeration value="RECOVERY_NO_CHANGE"/>
+ <xs:enumeration value="RECOVERY_DIAGNOSTICS"/>
+ <xs:enumeration value="RECOVERY_DEFAULT"/>
+ <xs:enumeration value="RECOVERY_S2_RESUME"/>
+ <xs:enumeration value="RECOVERY_S3_RESUME"/>
+ <xs:enumeration value="RECOVERY_S4_RESUME"/>
+ <xs:enumeration value="RECOVERY_S5_RESUME"/>
+ <xs:enumeration value="RECOVERY_FLASH_UPDATE"/>
+ <xs:enumeration value="UNDEFINED"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ </xs:element>
+
+ <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="Usage" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="CONSUMES">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The module always supports
+ the given boot modes. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_CONSUMES">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The module may support a
+ given mode on some execution paths. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PRODUCES">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The module will change the
+ boot mode. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIME_PRODUCES">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The module will change the
+ boot mode on some exection paths. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="UNDEFINED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The package creator does not
+ know how the boot mode is used. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Event" nillable="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="Usage" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="CONSUMES">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The module will register a
+ notification function and calls the function when it is
+ signaled. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_CONSUMES">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The module will register a
+ notification function and calls the function when it is
+ signaled on some execution paths. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PRODUCES">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The module will signal all
+ events in an event group. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_PRODUCES">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The module will signal all
+ events in an event group under some execution paths.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="UNDEFINED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The package creator does not
+ know how an event is used. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="EventType" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="EVENT_TYPE_PERIODIC_TIMER"/>
+ <xs:enumeration value="EVENT_TYPE_RELATIVE_TIMER"/>
+ <xs:enumeration value="UNDEFINED"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+
+ </xs:attribute>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="HOB" nillable="false">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is a list of non-GUIDed Hand Off Blocks
+ (HOBs) produced or consumed by this module. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="HobType" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="PHIT"/>
+ <xs:enumeration value="MEMORY_ALLOCATION"/>
+ <xs:enumeration value="RESOURCE_DESCRIPTOR"/>
+ <xs:enumeration value="FIRMWARE_VOLUME"/>
+ <xs:enumeration value="LOAD_PEIM"/>
+ <xs:enumeration value="UNDEFINED"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="Usage" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="CONSUMES">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A HOB must be present in the
+ system. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_CONSUMES">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> If present, the HOB will be
+ used. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PRODUCES">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The HOB is always produced
+ by the module. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_PRODUCES">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The HOB may be produced by
+ the module under some execution paths. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="UNDEFINED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The package creator knows
+ that a HOB is used, but does not know how it is used.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+
+ </xs:sequence>
+ <xs:attributeGroup ref="SupportedArchMod"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of ModuleProperties Section -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section may be included for Modules that are copied
+ from a different module. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="GUID">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This GUID and the Version attribute uniquely
+ identify the Module that this Module was copied from. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="RegistryFormatGuid">
+ <xs:attribute name="Version" type="xs:decimal" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This value, along with the GUID,
+ is used to uniquely identify this object. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of ClonedFrom Section. -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="LibraryClassDefinitions">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A list of the different Library Classes consumed by a
+ driver, core and/or application module, or produced by a Library module. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="LibraryClass">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="Keyword" type="xs:NCName">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us "> 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.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="RecommendedInstance">
+ <xs:complexType>
+ <xs:all>
+ <xs:element minOccurs="1" maxOccurs="1" name="GUID">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This GUID and the
+ Version attribute uniquely identify the recommended Library
+ Instance for this module . </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="RegistryFormatGuid">
+ <xs:attribute name="Version" type="xs:decimal"
+ use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This value, along with
+ the GUID, is used to uniquely identify this object.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:all>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="Usage" use="required">
+ <xs:simpleType>
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="PRODUCES"/>
+ <xs:enumeration value="CONSUMES"/>
+ <xs:enumeration value="SOMETIMES_CONSUMES"/>
+ <xs:enumeration value="UNDEFINED"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+
+ <xs:attributeGroup ref="SupportedArchMod"/>
+ <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of LibraryClassDefinitions Section -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="SourceFiles">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the module relative
+ (ModuleProperties.Path) path and filename location within the ZIP file.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:anyURI">
+ <xs:attribute name="Family" type="FamilyTypes" use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of SourceFiles Section -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="BinaryFiles">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="BinaryFile">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the module relative
+ (ModuleProperties.Path) path and filename location within the ZIP
+ file. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:anyURI">
+ <xs:attribute name="FileType" use="optional">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Binary file distribution
+ is limited to UEFI/PI FFS leaf section file types.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:enumeration value="GUID"/>
+ <xs:enumeration value="FREEFORM"/>
+ <xs:enumeration value="UEFI_IMAGE"/>
+ <xs:enumeration value="PE32">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A UEFI/PI FFS Leaf
+ section file type, not a raw PE32 file. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PIC"/>
+ <xs:enumeration value="PEI_DEPEX"/>
+ <xs:enumeration value="DXE_DEPEX"/>
+ <xs:enumeration value="SMM_DEPEX"/>
+ <xs:enumeration value="COMPAT16"/>
+ <xs:enumeration value="DISPOSABLE"/>
+ <xs:enumeration value="TE"/>
+ <xs:enumeration value="VER"/>
+ <xs:enumeration value="UI"/>
+ <xs:enumeration value="BIN"/>
+ <xs:enumeration value="FV"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="GUID" use="optional"
+ type="RegistryFormatGuid"/>
+ <xs:attribute name="SupArchList" type="ArchListType"
+ use="optional"/>
+ <xs:attribute name="SupModList" type="ModuleListType"
+ use="optional"/>
+ <xs:attribute name="FeatureFlag" type="xs:normalizedString"
+ use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="AsBuilt">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="PatchPcdValue">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The element is the
+ Patchable PCD Value that was used during the build.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1"
+ name="TokenSpaceGuidValue" type="RegistryFormatGuid"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="PcdCName"
+ type="xs:NCName"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="Token">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The minLength of 3 is
+ required to handle the "0x" prefix to the hex number.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="HexNumber">
+ <xs:minLength value="3"/>
+ <xs:maxLength value="10"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="DatumType"
+ type="PcdDatumTypes"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This field is required
+ if the Pcd Datum Type is VOID* </xs:documentation>
+ <xs:documentation xml:lang="en-us"> The minLength of 3 is
+ required to handle the "0x" prefix to the hex number.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="HexNumber">
+ <xs:minLength value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="Value"
+ type="xs:normalizedString"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="Offset">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The minLength of 3 is
+ required to handle the "0x" prefix to the hex number.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="HexNumber">
+ <xs:minLength value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element ref="HelpText" minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded"
+ name="PcdError">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Error information
+ implemented by the module. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="1" name="ValidValueList">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:normalizedString">
+ <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="ValidValueRange" type="xs:normalizedString"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="Expression" type="xs:normalizedString"/>
+ </xs:choice>
+ <xs:element minOccurs="1" maxOccurs="1" name="ErrorNumber">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The minLength of 3 is
+ required to handle the "0x" prefix to the hex number.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="HexNumber">
+ <xs:minLength value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded"
+ name="ErrorMessage">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Lang" type="xs:language" default="en-us"
+ use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="PcdExValue">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The element is the
+ DynamicEx PCD Value that was used during the build.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1"
+ name="TokenSpaceGuidValue" type="RegistryFormatGuid"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="Token">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The minLength of 3 is
+ required to handle the "0x" prefix to the hex number.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="HexNumber">
+ <xs:minLength value="3"/>
+ <xs:maxLength value="10"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="DatumType"
+ type="PcdDatumTypes"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This field is required
+ if the Pcd Datum Type is VOID* </xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="HexNumber">
+ <xs:minLength value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="Value"
+ type="xs:normalizedString"/>
+ <xs:element ref="HelpText" minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded"
+ name="PcdError">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Error information
+ implemented by the module. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="1" name="ValidValueList">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:normalizedString">
+ <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="ValidValueRange" type="xs:normalizedString"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="Expression" type="xs:normalizedString"/>
+ </xs:choice>
+ <xs:element minOccurs="1" maxOccurs="1" name="ErrorNumber">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The minLength of 3 is
+ required to handle the "0x" prefix to the hex number.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="HexNumber">
+ <xs:minLength value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded"
+ name="ErrorMessage">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Lang" type="xs:language" default="en-us"
+ use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element minOccurs="0" maxOccurs="1" name="LibraryInstances">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the actual
+ library instance that was used to link against the module.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="GUID">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This GUID and the
+ Version attribute uniquely identify the actual Library
+ Instance linked in this module. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="RegistryFormatGuid">
+ <xs:attribute name="Version" type="xs:decimal"
+ use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This value, along with
+ the GUID, is used to uniquely identify this object.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="BuildFlags">
+ <xs:complexType mixed="true">
+ <xs:simpleContent>
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Any description of OS,
+ Tool, and flags for the individual tool can go in this
+ section. </xs:documentation>
+ </xs:annotation>
+ <xs:extension base="xs:string">
+ <xs:anyAttribute processContents="lax"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of AsBuilt -->
+ <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of BinaryFiles Section -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="PackageDependencies">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Package">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Lang" type="xs:language" default="en-us"
+ use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="GUID">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This GUID and the Version attribute
+ uniquely identify Package that this Module depends on.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="RegistryFormatGuid">
+ <xs:attribute name="Version" type="xs:decimal" use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageDependencies -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="Guids">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="GuidCName">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="GUID" type="RegistryFormatGuid"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="VariableName"
+ type="xs:normalizedString">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Only valid for Variable GUID types. </xs:documentation>
+ <xs:documentation> This can be either a Hex Array or C string in unicode
+ format: L"string" Data. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="Usage" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="CONSUMES">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us">The module does not install
+ the GUID, and the GUID must be present for the module to
+ execute. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_CONSUMES">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The module does not install
+ the GUID, however, the GUID will be used if it is present.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PRODUCES">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The module always installs
+ the GUID. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_PRODUCES">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The Module will install the
+ GUID under certain execution paths. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="UNDEFINED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The package creator knows
+ that a GUID is used, but does not know how it is used.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="GuidType" type="GuidListType" use="required"/>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of Guids Section -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="Protocols">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A listing of protocols required or produced by this module.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Protocol" nillable="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="GUID" type="RegistryFormatGuid"/>
+ <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="Usage" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="PRODUCES"/>
+ <xs:enumeration value="SOMETIMES_PRODUCES"/>
+ <xs:enumeration value="CONSUMES"/>
+ <xs:enumeration value="SOMETIMES_CONSUMES"/>
+ <xs:enumeration value="TO_START"/>
+ <xs:enumeration value="BY_START"/>
+ <xs:enumeration value="UNDEFINED"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="Notify" type="xs:boolean" use="optional"/>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of Protocols Section -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="PPIs">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A listing of PPIs required or produced by this module.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Ppi" nillable="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="GUID" type="RegistryFormatGuid"/>
+ <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="Usage" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="PRODUCES"/>
+ <xs:enumeration value="SOMETIMES_PRODUCES"/>
+ <xs:enumeration value="CONSUMES"/>
+ <xs:enumeration value="SOMETIMES_CONSUMES"/>
+ <xs:enumeration value="UNDEFINED"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="Notify" type="xs:boolean" use="optional"/>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PPIs Section -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="Externs">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> These elements specify additional information about the
+ module. This area may be used by tools to generate code. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Extern">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice minOccurs="1">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="1" name="EntryPoint"
+ type="xs:NCName"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="UnloadImage"
+ type="xs:NCName"/>
+ </xs:sequence>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="1" name="Constructor"
+ type="xs:NCName"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="Destructor"
+ type="xs:NCName"/>
+ </xs:sequence>
+ </xs:choice>
+ <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of Externs Section -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="PcdCoded">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section describes how a platform is coded with respect
+ to the platform configuration knobs. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdEntry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="CName" type="xs:NCName"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="TokenSpaceGuidCName"
+ type="xs:NCName"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue"
+ type="xs:normalizedString"/>
+ <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="PcdItemType" type="PcdItemTypes" use="required"/>
+ <xs:attribute name="PcdUsage" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="PRODUCES"/>
+ <xs:enumeration value="SOMETIMES_PRODUCES"/>
+ <xs:enumeration value="CONSUMES"/>
+ <xs:enumeration value="SOMETIMES_CONSUMES"/>
+ <xs:enumeration value="UNDEFINED"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+
+ </xs:attribute>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PcdCoded Section -->
+
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="PeiDepex">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the PEI dependency expression for a Dependency
+ Section. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Expression" type="xs:string" minOccurs="1" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PeiDepex Section -->
+
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="DxeDepex">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the DXE dependency expression for a Dependency
+ Section. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Expression" type=" xs:string " minOccurs="1" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of DxeDepex Section -->
+
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="SmmDepex">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the SMM dependency expression for a Dependency
+ Section. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Expression" type=" xs:string " minOccurs="1" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of SmmDepex Section -->
+
+
+ <xs:element minOccurs="0" maxOccurs="1" name="MiscellaneousFiles">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section is used to provide comments and/or list
+ auxiliary files, such as pdb or map files. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
+ />
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the path and filename location within
+ the ZIP file. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:anyURI">
+ <xs:attribute name="Executable" type="xs:boolean" default="false"
+ use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> If true, used by installation
+ tools to ensure that a file that must be executable has the
+ correct properties to permit execution. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of Module Surface Area Misc Section -->
+
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="UserExtensions">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section is used for any processing instructions that
+ may be custom to the content provided by the distribution that are common to module. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> The content is vendor specific. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> The content can be plain text as well as any user-defined,
+ properly formatted XML structure. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:attribute name="UserId" type="xs:NCName" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="Identifier" type="xs:string" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This can be any string used to differentiate or
+ identify this section from other UserExtensions sections. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:anyAttribute processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of Module Surface Area UserExtensions Section -->
+
+ </xs:sequence>
+ <xs:attribute name="BinaryModule" type="xs:boolean" default="false" use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+
+ </xs:element>
+ <!-- End of the ModuleSurfaceArea element. -->
+
+ <xs:element name="Tools">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="1" name="Header">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="Name" type="xs:normalizedString">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us">This is the User Interface Name for this Tools
+ Distribution.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="Copyright" type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is only required if the Copyright is
+ different from the Distribution Package copyright. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is only required if the License is
+ different from the Distribution Package license. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="Abstract">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is only required if the Abstract is
+ different from the Distribution Package Abstract. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:normalizedString">
+ <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="Description">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is only required if the Description is
+ different from the Distribution Package Description. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the path and filename location within the ZIP file.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:anyURI">
+ <xs:attribute name="OS" type="SupportedOs" use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is required for tools that execute; it
+ should not be used for configuration files. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="Executable" type="xs:boolean" default="false" use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> If true, used by installation tools to
+ ensure that a file that must be executable has the correct properties to
+ permit execution. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of the Tools element. -->
+
+ <xs:element name="MiscellaneousFiles">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section contains a list of files that are not part of the code
+ distributed with modules, packages or tools. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="1" name="Header">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="1" name="Name" type="xs:normalizedString">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The User interface name for this content.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="Copyright" type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is only required if the Copyright is
+ different from the Distribution Package Copyright. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is only required if the License is
+ different from the Distribution Package License. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="Abstract" type="xs:normalizedString"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"
+ />
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Filename">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the path and filename location within the ZIP file.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:anyURI">
+ <xs:attribute name="Executable" type="xs:boolean" default="false" use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> If true, used by installation tools to
+ ensure that a file that must be executable has the correct properties to
+ permit execution. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of the Misc element. -->
+
+ <xs:element name="UserExtensions">
+ <xs:complexType mixed="true">
+ <xs:sequence>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="UserId" type="xs:NCName" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="Identifier" type="xs:string" use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This can be any string used to differentiate or identify this
+ section from other UserExtensions sections. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:anyAttribute processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- The following elsements are common definitions used with the ref attribute for elements. -->
+
+ <xs:element name="HelpText">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- The following attribute groups are used in various elements above. -->
+
+ <xs:attributeGroup name="SupportedArchMod">
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
+ </xs:attributeGroup>
+
+ <!-- The following data types are used to restrict content. -->
+
+ <xs:simpleType name="ArchListType">
+ <xs:list itemType="ArchTypes"/>
+ </xs:simpleType>
+
+ <xs:simpleType name="ArchTypes">
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="IA32"/>
+ <xs:enumeration value="X64"/>
+ <xs:enumeration value="IPF"/>
+ <xs:enumeration value="EBC"/>
+ <xs:enumeration value="ARM"/>
+ <xs:pattern value="([A-Z])([a-zA-Z0-9])*">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Any processor architecture not listed above. The Architecture
+ must be a target architecture of one or more compiler tool chains. </xs:documentation>
+ </xs:annotation>
+ </xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+
+
+ <xs:simpleType name="FamilyTypes">
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="MSFT"/>
+ <xs:enumeration value="GCC"/>
+ <xs:pattern value="[A-Z][a-zA-Z0-9]*">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Any other family of build utilities for which compiler tools
+ exist. </xs:documentation>
+ </xs:annotation>
+ </xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="GuidListType">
+ <xs:list itemType="GuidTypes"/>
+ </xs:simpleType>
+
+ <xs:simpleType name="GuidTypes">
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="Event"/>
+ <xs:enumeration value="File"/>
+ <xs:enumeration value="FV"/>
+ <xs:enumeration value="GUID"/>
+ <xs:enumeration value="HII"/>
+ <xs:enumeration value="Hii"/>
+ <xs:enumeration value="HOB"/>
+ <xs:enumeration value="SystemTable"/>
+ <xs:enumeration value="TokenSpaceGuid"/>
+ <xs:enumeration value="Variable"/>
+ <xs:enumeration value="UNDEFINED"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="HexNumber">
+ <xs:restriction base="xs:hexBinary">
+ <xs:pattern value="0x([a-fA-F0-9])+"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="Md5Sum">
+ <xs:restriction base="xs:normalizedString">
+ <xs:pattern value="[a-zA-Z0-9]{32}"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="ModuleListType">
+ <xs:list itemType="ModuleTypes"/>
+ </xs:simpleType>
+
+ <xs:simpleType name="ModuleTypes">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The following module types are defined by specifications. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Module types for components and libraries defined for this distribution
+ mechanism. </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="BASE ">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Use of this module is not restricted. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="DXE_CORE">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This module is only applicable to the DXE core.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="DXE_DRIVER">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This module is only applicable to a DXE driver.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="DXE_RUNTIME_DRIVER">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This module is only applicable to a DXE runtime driver.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="DXE_SAL_DRIVER">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This module is only applicable to an IPF DXE runtime driver.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="DXE_SMM_DRIVER">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This module is only applicable to a DXE SMM driver.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PEI_CORE">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This module is only applicable to the PEI core.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PEIM">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This module is only valid for PEI modules. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SEC">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This module is only applicable to Security phase.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="UEFI_DRIVER">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This module is only valid for UEFI drivers. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="UEFI_RUNTIME_DRIVER">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This module is only valid for UEFI runtime
+ drivers.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="UEFI_APPLICATION">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This module is only valid for UEFI applications.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SMM_CORE">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This module is only applicable to the SMM
+ core.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="USER_DEFINED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This content is restricted to a specific implementation.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="UNDEFINED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:pattern value="([A-Z])([a-zA-Z0-9])*">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This pattern has been added for use in a module lists - for
+ future expansion. </xs:documentation>
+ </xs:annotation>
+ </xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="PcdDatumTypes">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The following data types are defined by the PCD specification (or PCD
+ section of the UEFI/PI specifications.) </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:normalizedString">
+ <xs:enumeration value="UINT8"/>
+ <xs:enumeration value="UINT16"/>
+ <xs:enumeration value="UINT32"/>
+ <xs:enumeration value="UINT64"/>
+ <xs:enumeration value="BOOLEAN"/>
+ <xs:enumeration value="VOID*"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="PcdItemListType">
+ <xs:list itemType="PcdItemTypes"/>
+ </xs:simpleType>
+
+ <xs:simpleType name="PcdItemTypes">
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="FeaturePcd">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="FixedPcd">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The Fixed PCD is a #define value that is set at build time.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PatchPcd">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Pcd">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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.) </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PcdEx">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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.) </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="RegistryFormatGuid">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A GUID must contain five different Hexadecimal character sets that are
+ separated by a dash (-) character. </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="\s*[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\s*"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="SupportedOs">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> 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. </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="Win32">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> For Windows 2003, Windows XP and Windows Vista.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="Win64">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> For Windows 2003, Windows XP and Windows Vista.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="RedHat32"/>
+ <xs:enumeration value="RedHat64"/>
+ <xs:enumeration value="SuSE32"/>
+ <xs:enumeration value="SuSE64"/>
+ <xs:enumeration value="Linux32"/>
+ <xs:enumeration value="Linux64"/>
+ <xs:enumeration value="OS/X32"/>
+ <xs:enumeration value="OS/X64"/>
+ <xs:enumeration value="Generic"/>
+ <xs:enumeration value="GenericWin">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Typically, this is used for Windows Batch files.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="GenericNix">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Typically use for shell scripts - valid for any Linux and Mac
+ OS/X. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:pattern value="[a-zA-Z]([a-zA-Z0-9])*"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+</xs:schema>
diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template index ec4eb97527..a68218deac 100644 --- a/BaseTools/Conf/tools_def.template +++ b/BaseTools/Conf/tools_def.template @@ -192,11 +192,6 @@ DEFINE IPHONE_TOOLS = /Developer/Platforms/iPhoneOS.platform/Develope DEFINE SOURCERY_CYGWIN_TOOLS = /cygdrive/c/Program Files/CodeSourcery/Sourcery G++ Lite/bin
-#
-# Change to the location clang was built
-#
-DEFINE CLANG_BIN = /usr/bin/
-
####################################################################################
#
# format: TARGET_TOOLCHAIN_ARCH_COMMANDTYPE_ATTRIBUTE = <string>
@@ -3136,11 +3131,11 @@ DEFINE GCC_ALL_CC_FLAGS = -g -Os -fshort-wchar -fno-strict-aliasing - DEFINE GCC_IA32_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -m32 -malign-double -freorder-blocks -freorder-blocks-and-partition -O2 -mno-stack-arg-probe
DEFINE GCC_X64_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -mno-red-zone -Wno-address -mno-stack-arg-probe
DEFINE GCC_IPF_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -minline-int-divide-min-latency
-DEFINE GCC_ARM_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -mword-relocations -mlittle-endian -mabi=aapcs -mapcs -fno-short-enums -save-temps -fsigned-char -ffunction-sections -fdata-sections -fomit-frame-pointer -Wno-address
+DEFINE GCC_ARM_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -mword-relocations -mlittle-endian -mabi=aapcs -mapcs -fno-short-enums -save-temps -fsigned-char -ffunction-sections -fdata-sections -fomit-frame-pointer -Wno-address -mthumb -mfloat-abi=soft
DEFINE GCC_AARCH64_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -mcmodel=large -mlittle-endian -fno-short-enums -save-temps -fverbose-asm -fsigned-char -ffunction-sections -fdata-sections -fomit-frame-pointer -fno-builtin -Wno-address
DEFINE GCC_DLINK_FLAGS_COMMON = -nostdlib --pie
DEFINE GCC_IA32_X64_DLINK_COMMON = DEF(GCC_DLINK_FLAGS_COMMON) --gc-sections
-DEFINE GCC_ARM_AARCH64_DLINK_COMMON= -Ttext=0x0 --emit-relocs -nostdlib -u $(IMAGE_ENTRY_POINT) -e $(IMAGE_ENTRY_POINT) -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map
+DEFINE GCC_ARM_AARCH64_DLINK_COMMON= -Ttext=0x0 --emit-relocs -nostdlib --gc-sections -u $(IMAGE_ENTRY_POINT) -e $(IMAGE_ENTRY_POINT) -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map
DEFINE GCC_IA32_X64_ASLDLINK_FLAGS = DEF(GCC_IA32_X64_DLINK_COMMON) --entry _ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT)
DEFINE GCC_ARM_AARCH64_ASLDLINK_FLAGS = DEF(GCC_ARM_AARCH64_DLINK_COMMON) --entry ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT)
DEFINE GCC_IA32_X64_DLINK_FLAGS = DEF(GCC_IA32_X64_DLINK_COMMON) --entry _$(IMAGE_ENTRY_POINT) --file-alignment 0x20 --section-alignment 0x20 -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map
@@ -3184,7 +3179,7 @@ DEFINE GCC46_IA32_X64_DLINK_FLAGS = DEF(GCC45_IA32_X64_DLINK_FLAGS) DEFINE GCC46_X64_DLINK_FLAGS = DEF(GCC45_X64_DLINK_FLAGS)
DEFINE GCC46_ASM_FLAGS = DEF(GCC45_ASM_FLAGS)
DEFINE GCC46_ARM_ASM_FLAGS = $(ARCHASM_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_ASM_FLAGS) -mlittle-endian
-DEFINE GCC46_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC44_ALL_CC_FLAGS) -mword-relocations -mlittle-endian -mabi=aapcs -mapcs -fno-short-enums -save-temps -fsigned-char -mno-unaligned-access -Wno-address -fomit-frame-pointer
+DEFINE GCC46_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC44_ALL_CC_FLAGS) DEF(GCC_ARM_CC_FLAGS) -mno-unaligned-access
DEFINE GCC46_ARM_DLINK_FLAGS = DEF(GCC_ARM_AARCH64_DLINK_COMMON) --oformat=elf32-littlearm
DEFINE GCC46_ARM_ASLDLINK_FLAGS = DEF(GCC_ARM_AARCH64_ASLDLINK_FLAGS) --oformat=elf32-littlearm
@@ -3198,7 +3193,7 @@ DEFINE GCC47_ASM_FLAGS = DEF(GCC46_ASM_FLAGS) DEFINE GCC47_ARM_ASM_FLAGS = DEF(GCC46_ARM_ASM_FLAGS)
DEFINE GCC47_AARCH64_ASM_FLAGS = $(ARCHASM_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_ASM_FLAGS) -mlittle-endian
DEFINE GCC47_ARM_CC_FLAGS = DEF(GCC46_ARM_CC_FLAGS)
-DEFINE GCC47_AARCH64_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC44_ALL_CC_FLAGS) -mcmodel=large -mlittle-endian -fno-short-enums -save-temps -fverbose-asm -fsigned-char -ffunction-sections -fdata-sections -fomit-frame-pointer -fno-builtin -Wno-address
+DEFINE GCC47_AARCH64_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC44_ALL_CC_FLAGS) DEF(GCC_AARCH64_CC_FLAGS)
DEFINE GCC47_ARM_DLINK_FLAGS = DEF(GCC46_ARM_DLINK_FLAGS)
DEFINE GCC47_AARCH64_DLINK_FLAGS = DEF(GCC_ARM_AARCH64_DLINK_COMMON)
DEFINE GCC47_ARM_ASLDLINK_FLAGS = DEF(GCC46_ARM_ASLDLINK_FLAGS)
@@ -3516,7 +3511,7 @@ DEFINE GCC48_AARCH64_ASLDLINK_FLAGS = DEF(GCC_ARM_AARCH64_ASLDLINK_FLAGS) *_GCC46_ARM_ASLPP_PATH = ENV(GCC46_ARM_PREFIX)gcc
*_GCC46_ARM_RC_PATH = ENV(GCC46_ARM_PREFIX)objcopy
-*_GCC46_ARM_ARCHCC_FLAGS = -mthumb
+*_GCC46_ARM_ARCHCC_FLAGS =
*_GCC46_ARM_PLATFORM_FLAGS = -march=armv7-a
*_GCC46_ARM_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS)
@@ -3610,7 +3605,7 @@ RELEASE_GCC46_ARM_CC_FLAGS = DEF(GCC46_ARM_CC_FLAGS) -Wno-unused-but-set-v *_GCC47_ARM_ASLPP_PATH = ENV(GCC47_ARM_PREFIX)gcc
*_GCC47_ARM_RC_PATH = ENV(GCC47_ARM_PREFIX)objcopy
-*_GCC47_ARM_ARCHCC_FLAGS = -mthumb
+*_GCC47_ARM_ARCHCC_FLAGS =
*_GCC47_ARM_PLATFORM_FLAGS = -march=armv7-a
*_GCC47_ARM_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS)
@@ -5484,15 +5479,15 @@ RELEASE_XCODE32_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -mthumb-inter RELEASE_XCLANG_*_MTOC_FLAGS = -align 0x20
-*_XCLANG_*_CC_PATH = DEF(CLANG_BIN)clang
+*_XCLANG_*_CC_PATH = ENV(CLANG_BIN)clang
*_XCLANG_*_SLINK_PATH = libtool
*_XCLANG_*_DLINK_PATH = ld
*_XCLANG_*_ASM_PATH = as
-*_XCLANG_*_PP_PATH = DEF(CLANG_BIN)clang
-*_XCLANG_*_VFRPP_PATH = DEF(CLANG_BIN)clang
+*_XCLANG_*_PP_PATH = ENV(CLANG_BIN)clang
+*_XCLANG_*_VFRPP_PATH = ENV(CLANG_BIN)clang
*_XCLANG_*_ASL_PATH = iasl
-*_XCLANG_*_ASLCC_PATH = DEF(CLANG_BIN)clang
-*_XCLANG_*_ASLPP_PATH = DEF(CLANG_BIN)clang
+*_XCLANG_*_ASLCC_PATH = ENV(CLANG_BIN)clang
+*_XCLANG_*_ASLPP_PATH = ENV(CLANG_BIN)clang
*_XCLANG_*_ASLDLINK_PATH = ld
####################
@@ -5550,7 +5545,7 @@ DEFINE RVCT_ALL_DLINK_FLAGS = --ro-base 0 --no_scanlib --reloc --no_exceptions #
# Use default values, or override in DSC file
#
-*_RVCT_ARM_ARCHCC_FLAGS = --thumb
+*_RVCT_ARM_ARCHCC_FLAGS = --thumb --fpu=softvfp
*_RVCT_ARM_ARCHASM_FLAGS =
*_RVCT_ARM_ARCHDLINK_FLAGS =
*_RVCT_ARM_PLATFORM_FLAGS = --cpu 7-A
@@ -5592,7 +5587,7 @@ RELEASE_RVCT_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) --diag_suppress=5 #
# Use default values, or override in DSC file
#
-*_RVCTLINUX_ARM_ARCHCC_FLAGS = --thumb
+*_RVCTLINUX_ARM_ARCHCC_FLAGS = --thumb --fpu=softvfp
*_RVCTLINUX_ARM_ARCHASM_FLAGS =
*_RVCTLINUX_ARM_ARCHDLINK_FLAGS =
*_RVCTLINUX_ARM_PLATFORM_FLAGS = --cpu 7-A
@@ -5639,7 +5634,7 @@ RELEASE_RVCTLINUX_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) --diag_suppr #
# Use default values, or override in DSC file
#
-*_RVCTCYGWIN_ARM_ARCHCC_FLAGS = --thumb
+*_RVCTCYGWIN_ARM_ARCHCC_FLAGS = --thumb --fpu=softvfp
*_RVCTCYGWIN_ARM_ARCHASM_FLAGS =
*_RVCTCYGWIN_ARM_ARCHDLINK_FLAGS =
*_RVCTCYGWIN_ARM_PLATFORM_FLAGS = --cpu 7-A
@@ -5707,7 +5702,7 @@ RELEASE_RVCTCYGWIN_ARM_CC_FLAGS = "$(CCPATH_FLAG)" $(ARCHCC_FLAGS) $(PLATFORM_F #
# Use default values, or override in DSC file
#
-*_ARMGCC_ARM_ARCHCC_FLAGS = -mthumb
+*_ARMGCC_ARM_ARCHCC_FLAGS =
*_ARMGCC_ARM_ARCHASM_FLAGS =
*_ARMGCC_ARM_ARCHDLINK_FLAGS =
*_ARMGCC_ARM_PLATFORM_FLAGS = -march=armv7-a
@@ -5719,7 +5714,7 @@ RELEASE_ARMGCC_ARM_ASM_FLAGS = $(ARCHASM_FLAGS) $(PLATFORM_FLAGS) -mlittle-end *_ARMGCC_ARM_VFRPP_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -x c -E -P -DVFRCOMPILE --include $(DEST_DIR_DEBUG)/$(MODULE_NAME)StrDefs.h
*_ARMGCC_ARM_SLINK_FLAGS = -rc
-*_ARMGCC_ARM_DLINK_FLAGS = $(ARCHDLINK_FLAGS) -Ttext=0x0 --oformat=elf32-littlearm --emit-relocs -nostdlib -u $(IMAGE_ENTRY_POINT) -e $(IMAGE_ENTRY_POINT) -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map
+*_ARMGCC_ARM_DLINK_FLAGS = $(ARCHDLINK_FLAGS) DEF(GCC_ARM_AARCH64_DLINK_COMMON) --oformat=elf32-littlearm
DEBUG_ARMGCC_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_ARM_CC_FLAGS) -O0
RELEASE_ARMGCC_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_ARM_CC_FLAGS) -Wno-unused
@@ -5755,7 +5750,7 @@ RELEASE_ARMGCC_AARCH64_ASM_FLAGS = $(ARCHASM_FLAGS) $(PLATFORM_FLAGS) *_ARMGCC_AARCH64_VFRPP_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -x c -E -P -DVFRCOMPILE --include $(DEST_DIR_DEBUG)/$(MODULE_NAME)StrDefs.h
*_ARMGCC_AARCH64_SLINK_FLAGS = -rc
-*_ARMGCC_AARCH64_DLINK_FLAGS = $(ARCHDLINK_FLAGS) -Ttext=0x0 --emit-relocs -nostdlib -u $(IMAGE_ENTRY_POINT) -e $(IMAGE_ENTRY_POINT) -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map
+*_ARMGCC_AARCH64_DLINK_FLAGS = $(ARCHDLINK_FLAGS) DEF(GCC_ARM_AARCH64_DLINK_COMMON)
DEBUG_ARMGCC_AARCH64_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_AARCH64_CC_FLAGS) -Wno-address -O0
RELEASE_ARMGCC_AARCH64_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_AARCH64_CC_FLAGS) -Wno-address -Wno-unused-but-set-variable
@@ -5801,7 +5796,7 @@ RELEASE_ARMGCC_AARCH64_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_AARC #
# Use default values, or override in DSC file
#
-*_ARMLINUXGCC_ARM_ARCHCC_FLAGS = -mthumb
+*_ARMLINUXGCC_ARM_ARCHCC_FLAGS =
*_ARMLINUXGCC_ARM_ARCHASM_FLAGS =
*_ARMLINUXGCC_ARM_ARCHDLINK_FLAGS =
*_ARMLINUXGCC_ARM_PLATFORM_FLAGS = -march=armv7-a
@@ -5813,7 +5808,7 @@ RELEASE_ARMLINUXGCC_ARM_ASM_FLAGS = $(ARCHASM_FLAGS) $(PLATFORM_FLAGS) -mlittl *_ARMLINUXGCC_ARM_VFRPP_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -x c -E -P -DVFRCOMPILE --include $(DEST_DIR_DEBUG)/$(MODULE_NAME)StrDefs.h
*_ARMLINUXGCC_ARM_SLINK_FLAGS = -rc
-*_ARMLINUXGCC_ARM_DLINK_FLAGS = $(ARCHDLINK_FLAGS) -Ttext=0x0 --oformat=elf32-littlearm --emit-relocs -nostdlib -u $(IMAGE_ENTRY_POINT) -e $(IMAGE_ENTRY_POINT) -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map
+*_ARMLINUXGCC_ARM_DLINK_FLAGS = $(ARCHDLINK_FLAGS) DEF(GCC_ARM_AARCH64_DLINK_COMMON) --oformat=elf32-littlearm
DEBUG_ARMLINUXGCC_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_ARM_CC_FLAGS) -fno-stack-protector -mno-unaligned-access -O0
RELEASE_ARMLINUXGCC_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_ARM_CC_FLAGS) -fno-stack-protector -mno-unaligned-access -Wno-unused-but-set-variable
@@ -5849,7 +5844,7 @@ RELEASE_ARMLINUXGCC_AARCH64_ASM_FLAGS = $(ARCHASM_FLAGS) $(PLATFORM_FLAGS) *_ARMLINUXGCC_AARCH64_VFRPP_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -x c -E -P -DVFRCOMPILE --include $(DEST_DIR_DEBUG)/$(MODULE_NAME)StrDefs.h
*_ARMLINUXGCC_AARCH64_SLINK_FLAGS = -rc
-*_ARMLINUXGCC_AARCH64_DLINK_FLAGS = $(ARCHDLINK_FLAGS) -Ttext=0x0 --emit-relocs -nostdlib -u $(IMAGE_ENTRY_POINT) -e $(IMAGE_ENTRY_POINT) -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map
+*_ARMLINUXGCC_AARCH64_DLINK_FLAGS = $(ARCHDLINK_FLAGS) DEF(GCC_ARM_AARCH64_DLINK_COMMON)
DEBUG_ARMLINUXGCC_AARCH64_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_AARCH64_CC_FLAGS) -Wno-address -O0
RELEASE_ARMLINUXGCC_AARCH64_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_AARCH64_CC_FLAGS) -Wno-address -Wno-unused-but-set-variable
|