git-svn-id: https://buildtools.tianocore.org/svn/buildtools/trunk/BaseTools@32 7335b3...
authorjwang36 <jwang36@7335b38e-4728-0410-8992-fb3ffe349368>
Wed, 14 Mar 2007 14:38:53 +0000 (14:38 +0000)
committerjwang36 <jwang36@7335b38e-4728-0410-8992-fb3ffe349368>
Wed, 14 Mar 2007 14:38:53 +0000 (14:38 +0000)
13 files changed:
Conf/FrameworkDatabase.template [new file with mode: 0644]
Conf/XMLSchema/FarManifest.xsd [new file with mode: 0644]
Conf/XMLSchema/FrameworkDataAttributes.xsd [new file with mode: 0644]
Conf/XMLSchema/FrameworkDataElements.xsd [new file with mode: 0644]
Conf/XMLSchema/FrameworkDataTypes.xsd [new file with mode: 0644]
Conf/XMLSchema/FrameworkHeaders.xsd [new file with mode: 0644]
Conf/XMLSchema/FrameworkPlatformDataElements.xsd [new file with mode: 0644]
Conf/XMLSchema/FrameworkPlatformDataTypes.xsd [new file with mode: 0644]
Conf/XMLSchema/NamingConvention.xsd [new file with mode: 0644]
Conf/XMLSchema/SurfaceArea.xsd [new file with mode: 0644]
Conf/XMLSchema/SurfaceArea.xsdconfig [new file with mode: 0644]
Conf/target.template [new file with mode: 0644]
Conf/tools_def.template [new file with mode: 0644]

diff --git a/Conf/FrameworkDatabase.template b/Conf/FrameworkDatabase.template
new file mode 100644 (file)
index 0000000..f868ea8
--- /dev/null
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<FrameworkDatabase xmlns="http://www.TianoCore.org/2006/Edk2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">\r
+  <FdbHeader>\r
+    <DatabaseName>FrameworkDatabase</DatabaseName>\r
+    <GuidValue>5ce32c23-6448-43ab-b509-a9deae3aae65</GuidValue>\r
+    <Version>0.5</Version>\r
+    <Abstract>The Framework Module Development Packaging System Database</Abstract>\r
+    <Description>This Database tracks all packages and platforms installed in this workspace.</Description>\r
+    <Copyright>Copyright (c) 2006,  Intel Corporation.</Copyright>\r
+    <License>All rights reserved.
+      This program and the accompanying materials are licensed and made available 
+      under the terms and conditions of the BSD License which accompanies this distribution.
+      The full text of the license 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.</License>\r
+    <Specification>FRAMEWORK_BUILD_PACKAGING_SPECIFICATION   0x00000052</Specification>\r
+  </FdbHeader>\r
+  <PackageList>\r
+    <Filename>MdePkg/MdePkg.spd</Filename>\r
+    <Filename>Tools/Tools.spd</Filename>\r
+    <!--<Filename>Tools/Java/JavaTools.spd</Filename>-->\r
+    <Filename>EdkModulePkg/EdkModulePkg.spd</Filename>\r
+    <Filename>EdkNt32Pkg/EdkNt32Pkg.spd</Filename>\r
+    <Filename>EdkFatBinPkg/EdkFatBinPkg.spd</Filename>\r
+    <Filename>EdkShellBinPkg/EdkShellBinPkg.spd</Filename>\r
+    <Filename>EdkUnixPkg/EdkUnixPkg.spd</Filename>\r
+  </PackageList>\r
+  <PlatformList>\r
+    <Filename>MdePkg/MdePkg.fpd</Filename>\r
+    <Filename>EdkModulePkg/EdkModulePkg.fpd</Filename>\r
+    <Filename>EdkNt32Pkg/Nt32.fpd</Filename>\r
+    <Filename>EdkUnixPkg/Unix.fpd</Filename>\r
+  </PlatformList>\r
+  <FarList>\r
+    <Filename FarGuid="91062dfe-0bce-45b1-b3ad-3387d8d29d3f">Dummy</Filename>\r
+  </FarList>\r
+</FrameworkDatabase>
diff --git a/Conf/XMLSchema/FarManifest.xsd b/Conf/XMLSchema/FarManifest.xsd
new file mode 100644 (file)
index 0000000..744ec58
--- /dev/null
@@ -0,0 +1,223 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!--\r
+Filename: FarManifest.xsd\r
+\r
+Copyright (c) 2006, Intel Corp.\r
+All rights reserved. This program and the accompanying materials\r
+are licensed and made available under the terms and conditions of the BSD License\r
+which may be found at http://opensource.org/licenses/bsd-license.php\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+\r
+-->\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.TianoCore.org/2006/Edk2.0" xmlns="http://www.TianoCore.org/2006/Edk2.0">\r
+  <xs:include schemaLocation="FrameworkHeaders.xsd"/>  \r
+  <xs:annotation>\r
+    <xs:documentation xml:lang="en">\r
+      The Framework Archive File Format is defined as a Java Archive file, with a special xml file called FrameworkArchiveManifest.xml at the top of the archive. The FrameworkArchiveManifest.xml must be an instance of this schema.\r
+    </xs:documentation>\r
+  </xs:annotation>\r
+  <xs:element name="FrameworkArchiveManifest">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">\r
+        This schema defines the Framework Archive Manifest. \r
+      </xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="FarHeader"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="FarPackageList">   \r
+          <xs:annotation>\r
+            <xs:documentation>\r
+              The list of packages in this FAR.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+        </xs:element>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="FarPlatformList">          \r
+          <xs:annotation>\r
+            <xs:documentation>\r
+              The list of platforms in this FAR.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+        </xs:element>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="Contents">   \r
+          <xs:annotation>\r
+            <xs:documentation>\r
+              Extra contents that are not part of any Package or Platform. These file paths are WORKSPACE relative.  If a file exists in the workspace at this location, then the user should be asked whether to overwrite.  When the user removes the far, these should be removed also, unless they have been modified (per md5sum).\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+        </xs:element>\r
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="UserExtensions"/>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="FarPackageList">\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" ref="FarPackage"/>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="FarPackage">\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element ref="FarFilename">\r
+          <xs:annotation>\r
+            <xs:documentation>\r
+              This is the name of the .spd or file that describes the package. It must exist in the directory identified by DefaultPath.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+        </xs:element>\r
+        <xs:element ref="GuidValue"></xs:element>\r
+        <xs:element ref="Version"></xs:element>\r
+        <xs:element ref="DefaultPath">\r
+          <xs:annotation>\r
+            <xs:documentation>\r
+              This is the default installation location within the workspace. This also serves as the location within the far itself of the package root. The Contents of the pacakage will be found there. The user may choose some other location within the workspace to install the package, as long as it does not overlap a package that is already installed.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+        </xs:element>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="FarPlatformList">\r
+          <xs:annotation>\r
+            <xs:documentation>\r
+              This list of platforms is relative to the package root of the package that they are contained in. If the package that these are bound to is intstalled in some directory other than the default, then these platforms should be stored relative to that.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+        </xs:element>\r
+        <xs:element ref="Contents">\r
+          <xs:annotation>\r
+            <xs:documentation>\r
+              This is the list of files that belong to the package. They are specified by relative path from the root of the pacakge.                            \r
+            </xs:documentation>\r
+          </xs:annotation>\r
+        </xs:element>\r
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="UserExtensions"></xs:element>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="FarPlatform">\r
+    <xs:annotation>\r
+      <xs:documentation>\r
+        Platforms are treated separately from packages. A platform is listed in the far if, and only if, it is not part of some package.\r
+      </xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element ref="FarFilename">\r
+          <xs:annotation>\r
+            <xs:documentation>\r
+              This is the relative path to the .fpd file that describes the platform.\r
+            </xs:documentation>\r
+          </xs:annotation>\r
+        </xs:element>\r
+        <xs:element ref="GuidValue"></xs:element>\r
+        <xs:element ref="Version"></xs:element>\r
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="UserExtensions"></xs:element>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="DefaultPath" type="PathAndFilename"/>\r
+  <xs:element name="FarPlatformList">\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element maxOccurs="unbounded" ref="FarPlatform">\r
+        </xs:element>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="FarFilename" type="DbPathAndFilename">\r
+    <xs:annotation>\r
+      <xs:documentation>\r
+        The FarFilename is used to build up the Contents list. It has an md5sum attribute for keeping track of whether the file is changed after it is installed. The Md5sum can also be used to check the integrity of a far before it is installed into the workspace.\r
+      </xs:documentation>\r
+    </xs:annotation>\r
+  </xs:element>\r
+  <xs:element name="GuidValue" type="GuidType">\r
+    <xs:annotation>\r
+      <xs:documentation>\r
+        The purpose of this element is to allow Guids to be assigned to or used by other elements in the schema.\r
+      </xs:documentation>\r
+    </xs:annotation>\r
+  </xs:element>\r
+  <xs:element name="Contents">\r
+    <xs:annotation>\r
+      <xs:documentation>\r
+        This tag allows us to specify a tree of files all having a common root. All the files specified are relative to that common root.\r
+      </xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element maxOccurs="unbounded" ref="FarFilename"/>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:annotation>\r
+    <xs:documentation xml:lang="en">\r
+      Definitions and rules for creating, installing, updating and removing fars within the workspace.\r
+    </xs:documentation>\r
+    <xs:documentation>\r
+      1.  A module m is said to depend upon a package p, iff there exists a tuple (PackageGuid, PackageVerion) in the set m->PackageDependencies for which p->Guid==PackageGuid, and if PackageVersion is not empty, then p->Version== PackageVersion.\r
+    </xs:documentation>\r
+    <xs:documentation>\r
+      2.  A far f is said to depend on a far g, iff there is a module in a package in f that depends on a package in g.\r
+    </xs:documentation>\r
+    <xs:documentation>\r
+      3.  A far f is said to depend on a package p, iff there is a module m contained in f that depends on p.\r
+    </xs:documentation>\r
+    <xs:documentation>\r
+      3.1 A platform q is said to depend on a package p, iff p, or some module m contained in p, is necessary to build q.\r
+    </xs:documentation>\r
+    <xs:documentation>\r
+      4.  A far f may be installed into the workspace w, iff for each module m in f, m's dependencies are met by the packages in w or f.\r
+    </xs:documentation>\r
+    <xs:documentation>\r
+      a.  It is supported to "partially" install a far. A partial installation of a far means that 1 or more packages and/or platforms are installed into the workspace from the far. For each package or platform p in f, p's dependencies must be satisfied by a package in the workspace.\r
+    </xs:documentation>\r
+    <xs:documentation>\r
+      5.  A far f may be removed from the workspace w, iff for each module m in w, and for each package p in f, m does not depend on p.\r
+    </xs:documentation>\r
+    <xs:documentation>\r
+      a.  It is supported to "partially" remove a far. In this case, one or more of the packages or platforms in the far can be removed, provided that for each package and platform p in the workspace w, there does not exist a module m such that m depends on p.\r
+    </xs:documentation>\r
+    <xs:documentation>\r
+      6.  When installing a far f into workspace w, for each package p in f, allow the user to install in p's default location, or choose a new location l (which must be unoccupied) within the workspace. Record this location l in the database. Each package p in f will be recorded in the database, associated with the GUID of f, as well as the actual install location l. (So we will know which far each package belongs to.)\r
+    </xs:documentation>\r
+    <xs:documentation>\r
+      7.  When installing a far f into workspace w, if there exists a package p in w, and p is in f, then the user must be prompted to choose a location that does not collide with the location of p in workspace w. We will end up with two instances of p in w at two distinct locations. Alternately, the user may elect to partially install the far, leaving out the redundant package.\r
+    </xs:documentation>\r
+    <xs:documentation>\r
+      8.  A far f may replace a far g in the workspace w, iff for each module m contained in w, if m depends on a package p, and p is only contained in g, then there must exist a package q in f, such that m depends on q. The net effect is that g is removed and f is installed, in one operation. The normal rules for installing f still apply--the dependencies of the modules of f must be satisfied. After the replacement, it must be the case that all the modules dependencies in the workspace are satisfied. Note that it is possible to backrev a package in this way. \r
+    </xs:documentation>\r
+    <xs:documentation>\r
+          (If we find that the replace is not permitted, then the user may install f and keep g. Next, he could _port_ every module m in w that depends on g, to f and eventually remove g.)\r
+    </xs:documentation>\r
+    <xs:documentation>\r
+      9.  A special case of the above rule is that a far f may be reinstalled into the workspace. (This would allow the user to get a fresh copy, or change the location in the workspace where one or more of the packages of f are installed.)\r
+    </xs:documentation>\r
+    <xs:documentation>\r
+      10. When a far f is removed from the workspace w, for each package p in f, we will remove p from w.\r
+    </xs:documentation>\r
+    <xs:documentation>\r
+      11. If a package or platform p belongs to a far f, then it is legal to remove p from the workspace w iff, there does not exist a module m in w such that m depends on p.\r
+    </xs:documentation>\r
+    <xs:documentation>\r
+      12. When a far f is removed from the workspace, the we will remove all the files in f from the workspace tree. If a file has been modified from the original as installed from the far (per md5sum) then the user should be asked if he is "sure" he wants to remove it.\r
+    </xs:documentation>\r
+    <xs:documentation>\r
+      13. When a far is created, a GUID is generated and assigned to the far. If a far is created from the same components at a later time, it would have a different GUID.\r
+    </xs:documentation>\r
+    <xs:documentation>\r
+      14. If a package p is marked with p->RePackage==false, then p may not be added to a far.\r
+    </xs:documentation>\r
+    <xs:documentation>\r
+      15. When constructing a far f that contains at least one platform, then f may optionally be constructed such that for each platform q in f, every package p on which q depends should be included in f, unless p->RePackage==false. The far will have all the packages required, and may then be installed as a self-inflating executable that will create a brand new workspace on the developer's workstation.\r
+    </xs:documentation>\r
+    <xs:documentation>\r
+      16. A far f is identical to a far g, iff f->Guid == g->Guid.\r
+    </xs:documentation>\r
+    <xs:documentation>\r
+      17. A far f may be installed into the workspace w, iff there is no far g in w such that f->Guid==g->Guid. In that case, it is called "updating" the far in the workspace. The user may select some subset of packages or platforms to reinstall or update, to ensure that the files in the workspace are correct.\r
+    </xs:documentation>\r
+  </xs:annotation>\r
+</xs:schema>\r
diff --git a/Conf/XMLSchema/FrameworkDataAttributes.xsd b/Conf/XMLSchema/FrameworkDataAttributes.xsd
new file mode 100644 (file)
index 0000000..2f8b8af
--- /dev/null
@@ -0,0 +1,297 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://www.TianoCore.org/2006/Edk2.0" targetNamespace="http://www.TianoCore.org/2006/Edk2.0">\r
+  <!--\r
+    Filename: FrameworkDataAttributes.xsd\r
+    \r
+    Copyright (c) 2006, Intel Corp.\r
+    All rights reserved. This program and the accompanying materials\r
+    are licensed and made available under the terms and conditions of the BSD License\r
+    which may be found at http://opensource.org/licenses/bsd-license.php\r
+    \r
+    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+    \r
+  -->\r
+  <xs:annotation>\r
+    <xs:documentation xml:lang="en">This schema defines EFI and Framework Attribute. Only attributeGroups are specified in this file. </xs:documentation>\r
+  </xs:annotation>\r
+  <xs:include schemaLocation="NamingConvention.xsd"/>\r
+  <xs:include schemaLocation="FrameworkDataTypes.xsd"/>\r
+  <xs:include schemaLocation="FrameworkPlatformDataTypes.xsd"/>\r
+  <!-- Fix Name data type from xs:string -->\r
+  <xs:attributeGroup name="BlockAttributes">\r
+    <xs:attribute name="Name" type="BlockNameType" use="required"/>\r
+    <xs:attribute name="Size" type="HexAddressType" use="required"/>\r
+    <xs:attribute name="Flags" type="HexAddressType" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="BootModeAttributes">\r
+    <xs:attribute name="BootModeName" type="BootModeNames" use="required"/>\r
+    <xs:attribute name="Usage" type="BootModeUsage" use="required"/>\r
+    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="DataHubAttributes">\r
+    <xs:attribute name="Usage" type="DataHubUsage" use="required"/>\r
+    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="EventAttributes">\r
+    <xs:attribute name="Usage" type="EventUsage" use="required"/>\r
+    <xs:attribute name="EventGuidCName" type="C_NameType" use="optional"/>\r
+    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="ExternAttributes">\r
+    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="FfsAttributes">\r
+    <xs:attribute name="FfsFormatKeyword" type="KeywordType" use="required"/>\r
+    <xs:attribute name="FfsFileType" type="EfiFfsFileTypes" use="optional"/>\r
+    <xs:attribute name="FfsAttribTailPresent" type="xs:boolean" use="optional"/>\r
+    <xs:attribute name="FfsAttribRecovery" type="xs:boolean" use="optional" default="false"/>\r
+    <xs:attribute name="FfsAttribDataAlignment" type="FfsDataAlignmentType" use="optional"/>\r
+    <xs:attribute name="FfsAttribChecksumRequired" type="xs:boolean" use="optional" default="true"/>\r
+    <xs:attribute name="SupModuleList" type="ModuleListType" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="FilenameAttributes">\r
+    <xs:attribute name="TagName" type="ToolsNameConvention" use="optional"/>\r
+    <xs:attribute name="ToolCode" type="ToolsNameConvention" use="optional"/>\r
+    <xs:attribute name="ToolChainFamily" type="ToolsNameConvention" use="optional"/>\r
+    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="FlashDeviceImageAttributes">\r
+    <xs:attribute name="Name" type="xs:string" use="required"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="FlashDeviceImageFileAttributes">\r
+    <xs:attribute name="Name" type="xs:string" use="required"/>\r
+    <xs:attribute name="Region" type="xs:string" use="required"/>\r
+    <xs:attribute name="SubRegion" type="xs:string" use="optional"/>\r
+    <xs:attribute name="Optional" type="xs:boolean" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="FlashDeviceInfoAttributes">\r
+    <xs:attribute name="Name" type="xs:string" use="required"/>\r
+    <xs:attribute name="Size" type="HexAddressType" use="required"/>\r
+    <xs:attribute name="BaseAddress" type="HexAddressType" use="required"/>\r
+    <xs:attribute name="ErasePolarity" type="Polarity" use="required"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="FvRegionNameAttributes">\r
+    <xs:attribute name="FvBaseAddressPcdCName" type="C_NameType" use="required"/>\r
+    <xs:attribute name="FvRegionSizePcdCName" type="C_NameType" use="required"/>\r
+    <xs:attribute name="FvRegionAlignmentPcdCName" type="C_NameType" use="optional"/>\r
+    <xs:attribute name="FvPcdTokenSpaceGuid" type="GuidType" use="optional"/>\r
+    <xs:attribute name="Alignment" type="xs:positiveInteger" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="GuidAttributes">\r
+    <xs:attribute name="Usage" type="GuidUsage" use="required"/>\r
+    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="GuidDeclarationAttributes">\r
+    <xs:attribute name="Name" type="UiNameType" use="required"/>\r
+    <xs:attribute name="GuidTypeList" type="GuidListType" use="optional"/>\r
+    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+    <xs:attribute name="SupModuleList" type="ModuleListType" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="HiiPackageAttributes">\r
+    <xs:attribute name="Usage" type="HiiPackageUsage" use="required"/>\r
+    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="HobAttributes">\r
+    <xs:attribute name="Usage" type="HobUsage" use="required"/>\r
+    <xs:attribute name="HobGuidCName" type="C_NameType" use="optional"/>\r
+    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="IncludeHeaderAttributes">\r
+    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
+    <xs:attribute name="SupModuleList" type="ModuleListType" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="IndustryStdHeaderAttributes">\r
+    <xs:attribute name="Name" type="KeywordType" use="required"/>\r
+    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+    <xs:attribute name="SupModuleList" type="ModuleListType" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="LibraryAttributes">\r
+    <!-- LibraryAttributes is used for Libraries / Library elements in FPD files -->\r
+    <xs:attribute name="ModuleGuid" type="GuidType" use="required"/>\r
+    <xs:attribute name="ModuleVersion" type="VersionDataType" use="optional"/>\r
+    <xs:attribute name="PackageGuid" type="GuidType" use="required"/>\r
+    <xs:attribute name="PackageVersion" type="VersionDataType" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="LibraryClassAttributes">\r
+    <xs:attribute name="Usage" type="LibraryUsage" use="required"/>\r
+    <xs:attribute name="RecommendedInstanceVersion" type="VersionDataType" use="optional"/>\r
+    <xs:attribute name="RecommendedInstanceGuid" type="GuidType" use="optional"/>\r
+    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
+    <xs:attribute name="SupModuleList" type="ModuleListType" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="LibraryClassDeclarationAttributes">\r
+    <xs:attribute name="Name" type="KeywordType" use="required"/>\r
+    <xs:attribute name="RecommendedInstanceVersion" type="VersionDataType" use="optional"/>\r
+    <xs:attribute name="RecommendedInstanceGuid" type="GuidType" use="optional"/>\r
+    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+    <xs:attribute name="SupModuleList" type="ModuleListType" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="MsaGuidAttributes">\r
+    <xs:attribute name="Usage" type="GuidUsage" use="optional"/>\r
+    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="ModuleNameAttributes">\r
+    <xs:attribute name="ModuleGuid" type="GuidType" use="required"/>\r
+    <xs:attribute name="ModuleName" type="UiNameType" use="optional"/>\r
+    <xs:attribute name="ModuleVersion" type="VersionDataType" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="MsaAttributes">\r
+    <xs:attribute name="PackageGuid" type="GuidType" use="required"/>\r
+    <xs:attribute name="ModuleGuid" type="GuidType" use="required"/>\r
+    <xs:attribute name="ModuleVersion" type="VersionDataType" use="optional"/>\r
+    <xs:attribute name="PackageVersion" type="VersionDataType" use="optional"/>\r
+    <xs:attribute name="ForceDebug" type="xs:boolean" default="false" use="optional"/>\r
+    <xs:attribute name="BindingOrder" type="xs:int" use="optional"/>\r
+    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="OptionAttributes">\r
+    <xs:attribute name="BuildTargets" type="BuildTargetList" use="optional"/>\r
+    <xs:attribute name="ToolChainFamily" type="ToolsNameConvention" use="optional"/>\r
+    <xs:attribute name="TagName" type="ToolsNameConvention" use="optional"/>\r
+    <xs:attribute name="ToolCode" type="ToolsNameConvention" use="optional"/>\r
+    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="PackageHeaderAttributes">\r
+    <xs:attribute name="ModuleType" type="ModuleTypeDef" use="required"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="PackageAttributes">\r
+    <!-- Used with the MSA File, PackageDependencies.Package -->\r
+    <xs:attribute name="PackageGuid" type="GuidType" use="required"/>\r
+    <xs:attribute name="PackageVersion" type="VersionDataType" use="optional"/>\r
+    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="PackageNameAttributes">\r
+    <!--Used with the FrameworkDatabase PackageList.Packagename  -->\r
+    <xs:attribute name="PackageGuid" type="GuidType" use="required"/>\r
+    <xs:attribute name="PackageVersion" type="VersionDataType" use="optional"/>\r
+    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="DynamicBuildPcdAttributes">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">These attributes are for the Pcds listed in PcdData, PcdEntry and/or PcdBuildData entries.</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:attribute name="ItemType" type="PcdItemTypes" use="required"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="PcdBuildDefinitionAttributes">\r
+    <xs:attribute name="ItemType" type="PcdItemTypes" use="required"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="PcdCodedAttributes">\r
+    <!-- We need to modify ALL the MSA files that have PcdCoded sections to \r
+      set the PcdUsage.  Once we modify all the MSA files and we modify the \r
+      wizard and the build tools, we need to make this required. -->\r
+    <xs:attribute name="Usage" type="PcdUsage" use="optional"/>\r
+    <xs:attribute name="PcdItemType" type="PcdItemTypes" use="required"/>\r
+    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="PcdDeclarationAttributes">\r
+    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+    <xs:attribute name="SupModuleList" type="ModuleListType" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="PlatformAttributes">\r
+    <xs:attribute name="PlatformGuid" type="GuidType" use="required"/>\r
+    <xs:attribute name="PlatformVersion" type="VersionDataType" use="required"/>\r
+    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="PpiDeclarationAttributes">\r
+    <xs:attribute name="Name" type="UiNameType" use="required"/>\r
+    <xs:attribute name="GuidTypeList" type="GuidListType" use="optional"/>\r
+    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+    <xs:attribute name="SupModuleList" type="ModuleListType" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="PpiAttributes">\r
+    <xs:attribute name="Usage" type="PpiUsage" use="required"/>\r
+    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="PpiNotifyAttributes">\r
+    <xs:attribute name="Usage" type="PpiNotifyUsage" use="required"/>\r
+    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="ProcessStepAttributes">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">Attributes are either compressable and/or sequence order binding</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:attribute name="BindingOrder" type="xs:int" use="optional"/>\r
+    <xs:attribute name="SectionType" type="EfiSectionType" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="ProtocolAttributes">\r
+    <xs:attribute name="Usage" type="ProtocolUsage" use="required"/>\r
+    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="ProtocolDeclarationAttributes">\r
+    <xs:attribute name="Name" type="UiNameType" use="required"/>\r
+    <xs:attribute name="GuidTypeList" type="GuidListType" use="optional"/>\r
+    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+    <xs:attribute name="SupModuleList" type="ModuleListType" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="ProtocolNotifyAttributes">\r
+    <xs:attribute name="Usage" type="ProtocolNotifyUsage" use="required"/>\r
+    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="RawDataAttributes">\r
+    <xs:attribute name="Name" type="xs:string" use="required"/>\r
+    <xs:attribute name="Region" type="xs:string" use="required"/>\r
+    <xs:attribute name="SubRegion" type="xs:string" use="required"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="RegionAttributes">\r
+    <xs:attribute name="Name" type="xs:string" use="required"/>\r
+    <xs:attribute name="Size" type="HexAddressType" use="required"/>\r
+    <xs:attribute name="Flags" type="HexAddressType" use="optional"/>\r
+    <xs:attribute name="Attributes" type="xs:string" use="required"/>\r
+    <xs:attribute name="AreaType" type="EfiFvAreaType" use="required"/>\r
+    <xs:attribute name="Alignment" type="HexAddressType" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="SectionsAttributes">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">Attributes for Sections, EncapsulationTag and EncapsulationType</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:attribute name="BindingOrder" type="xs:nonNegativeInteger" use="optional"/>\r
+    <xs:attribute name="Compressible" type="xs:boolean" default="true" use="optional"/>\r
+    <xs:attribute name="SectionType" type="EfiSectionType" use="optional"/>\r
+    <xs:attribute name="EncapsulationType" type="xs:normalizedString" use="optional"/>\r
+    <xs:attribute name="Alignment" type="xs:string" use="optional"/>\r
+    <xs:attribute name="ToolName" type="xs:string" use="optional"/>\r
+    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="SubRegionAttributes">\r
+    <xs:attribute name="CreateHob" type="xs:boolean" use="required"/>\r
+    <xs:attribute name="Name" type="xs:string" use="required"/>\r
+    <xs:attribute name="Size" type="HexAddressType" use="required"/>\r
+    <xs:attribute name="Attributes" type="xs:string" use="required"/>\r
+    <xs:attribute name="AreaType" type="EfiFvAreaType" use="required"/>\r
+    <xs:attribute name="NameGuid" type="xs:string" use="required"/>\r
+    <xs:attribute name="AreaTypeGuid" type="xs:string" use="optional"/>\r
+    <xs:attribute name="FileSystemGuid" type="xs:string" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="SystemTableAttributes">\r
+    <xs:attribute name="Usage" type="SystemTableUsage" use="required"/>\r
+    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="UrlAttribute">\r
+    <xs:attribute name="Url" type="xs:anyURI"/>\r
+  </xs:attributeGroup>\r
+  <xs:attributeGroup name="VariableAttributes">\r
+    <xs:attribute name="Usage" type="VariableUsage" use="required"/>\r
+    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
+  </xs:attributeGroup>\r
+</xs:schema>\r
diff --git a/Conf/XMLSchema/FrameworkDataElements.xsd b/Conf/XMLSchema/FrameworkDataElements.xsd
new file mode 100644 (file)
index 0000000..9770208
--- /dev/null
@@ -0,0 +1,939 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://www.TianoCore.org/2006/Edk2.0" targetNamespace="http://www.TianoCore.org/2006/Edk2.0">\r
+  <!--\r
+    Filename: FrameworkDataElements.xsd\r
+    \r
+    Copyright (c) 2006, Intel Corp.\r
+    All rights reserved. This program and the accompanying materials\r
+    are licensed and made available under the terms and conditions of the BSD License\r
+    which may be found at http://opensource.org/licenses/bsd-license.php\r
+    \r
+    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+    \r
+  -->\r
+  <xs:annotation>\r
+    <xs:documentation xml:lang="en"> This schema defines EFI and Framework Data Elements </xs:documentation>\r
+  </xs:annotation>\r
+  <xs:include schemaLocation="NamingConvention.xsd"/>\r
+  <xs:include schemaLocation="FrameworkDataTypes.xsd"/>\r
+  <xs:include schemaLocation="FrameworkPlatformDataTypes.xsd"/>\r
+  <xs:include schemaLocation="FrameworkDataAttributes.xsd"/>\r
+  <xs:element name="Abstract" type="Sentence">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">Abstract is valid for all Description Files</xs:documentation>\r
+      <xs:documentation xml:lang="en">This section is required. This is a single sentence to describe the module and will be used in sample files as the abstract data in the header comment section.</xs:documentation>\r
+    </xs:annotation>\r
+  </xs:element>\r
+  <xs:element name="AntTask">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">This is a sub-element of UserDefinedAntTasks</xs:documentation>\r
+      <xs:documentation xml:lang="en">Define a file that contains one or more ant tasks that are to be added into or replacing of sequences of build steps. These files will be called using the ant-call task on a file name. These files must be valid apache-ant formatted task files.</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="0" maxOccurs="1" name="AntCmdOptions" type="xs:normalizedString"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" name="Filename" type="PathAndFilename"/>\r
+      </xs:sequence>\r
+      <xs:attribute name="Id" type="xs:int" use="required"/>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="BootModes">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">BootModes is valid for all Description Files</xs:documentation>\r
+      <xs:documentation xml:lang="en">This is a list of BootModes Supported by the Module</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" name="BootMode">\r
+          <xs:complexType>\r
+            <xs:sequence minOccurs="0">\r
+              <xs:element name="HelpText" type="Paragraph"/>\r
+            </xs:sequence>\r
+            <xs:attributeGroup ref="BootModeAttributes"/>\r
+          </xs:complexType>\r
+        </xs:element>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="BuildOptions">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">BuildOptions is valid for FPD files.</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="UserDefinedAntTasks"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="Options"/>\r
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="UserExtensions"/>\r
+        <!-- The following sections are legacy and will be removed -->\r
+        <xs:element minOccurs="0" maxOccurs="unbounded" name="Ffs">\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="0" maxOccurs="unbounded" name="Attribute">\r
+                <xs:complexType>\r
+                  <xs:attribute name="Name" type="C_NameType"/>\r
+                  <xs:attribute name="Value" type="xs:string"/>\r
+                </xs:complexType>\r
+              </xs:element>\r
+              <xs:element minOccurs="0" maxOccurs="1" name="Sections">\r
+                <xs:complexType>\r
+                  <xs:sequence minOccurs="1">\r
+                    <xs:element name="Section" minOccurs="0" maxOccurs="unbounded">\r
+                      <xs:complexType>\r
+                        <xs:sequence>\r
+                          <xs:element ref=" Filenames " minOccurs="0"/>\r
+                          <xs:element name="Args" type=" ArgsType " minOccurs="0"/>\r
+                          <xs:element name="OutFile" type=" FileNameConvention " minOccurs="0"/>\r
+                          <xs:element name="OutputFileExtension" type=" xs:string " minOccurs="0"/>\r
+                          <xs:element name="ToolName" type=" ToolType " minOccurs="0"/>\r
+                        </xs:sequence>\r
+                        <xs:attributeGroup ref=" SectionsAttributes "/>\r
+                      </xs:complexType>\r
+                    </xs:element>\r
+                    <xs:element name="Sections" minOccurs="0" maxOccurs="unbounded">\r
+                      <xs:complexType>\r
+                        <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
+                          <xs:element name="Section">\r
+                            <xs:complexType>\r
+                              <xs:sequence>\r
+                                <xs:element ref=" Filenames " minOccurs="0"/>\r
+                                <xs:element name="Args" type=" ArgsType " minOccurs="0"/>\r
+                                <xs:element name="OutFile" type=" FileNameConvention " minOccurs="0"/>\r
+                                <xs:element name="OutputFileExtension" type=" xs:string " minOccurs="0"/>\r
+                                <xs:element name="ToolName" type=" ToolType " minOccurs="0"/>\r
+                              </xs:sequence>\r
+                              <xs:attributeGroup ref="SectionsAttributes"/>\r
+                            </xs:complexType>\r
+                          </xs:element>\r
+                        </xs:sequence>\r
+                        <xs:attributeGroup ref=" SectionsAttributes "/>\r
+                      </xs:complexType>\r
+                    </xs:element>\r
+                  </xs:sequence>\r
+                  <xs:attributeGroup ref=" SectionsAttributes "/>\r
+                </xs:complexType>\r
+              </xs:element>\r
+            </xs:sequence>\r
+            <xs:attribute name="FfsKey" type="KeywordType" use="optional"/>\r
+          </xs:complexType>\r
+        </xs:element>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="Copyright" type="Paragraph"/>\r
+  <xs:element name="DataHubs">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">This is a list of DataHubRecord elements.</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" name="DataHubRecord">\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="DataHubCName" type="C_NameType"/>\r
+              <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
+            </xs:sequence>\r
+            <xs:attributeGroup ref="DataHubAttributes"/>\r
+          </xs:complexType>\r
+        </xs:element>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="DefaultValue">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">The default setting of a PCD entry.</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:simpleContent>\r
+        <xs:extension base="xs:normalizedString"/>\r
+      </xs:simpleContent>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="Description" type="Paragraph">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">This section is required for new modules and libraries and must contain more information than the Abstract.</xs:documentation>\r
+    </xs:annotation>\r
+  </xs:element>\r
+  <xs:element name="DynamicPcdBuildDefinitions">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">Child of Framework Platform Description (FPD)</xs:documentation>\r
+      <xs:documentation xml:lang="en">FPD uses this PCD information for Dynamic PCDs Only</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdBuildData">\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="C_Name" type="C_NameType"/>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="Token" type="TokenDataType"/>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="TokenSpaceGuidCName" type="C_NameType"/>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes"/>\r
+              <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize" type="DatumSizeLimitation"/>\r
+              <xs:element minOccurs="1" maxOccurs="unbounded" name="SkuInfo">\r
+                <xs:complexType>\r
+                  <xs:sequence>\r
+                    <xs:element minOccurs="1" maxOccurs="1" name="SkuId" type="xs:nonNegativeInteger"/>\r
+                    <xs:choice>\r
+                      <xs:group minOccurs="0" maxOccurs="1" ref="HiiEnable"/>\r
+                      <xs:group minOccurs="0" maxOccurs="1" ref="VpdEnable"/>\r
+                      <xs:group minOccurs="0" maxOccurs="1" ref="DefaultGroup"/>\r
+                    </xs:choice>\r
+                  </xs:sequence>\r
+                </xs:complexType>\r
+              </xs:element>\r
+            </xs:sequence>\r
+            <xs:attributeGroup ref="DynamicBuildPcdAttributes"/>\r
+          </xs:complexType>\r
+        </xs:element>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="Events">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">This is a list of MSA Events</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="0" maxOccurs="1" name="CreateEvents">\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="unbounded" name="EventTypes">\r
+                <xs:complexType>\r
+                  <xs:sequence>\r
+                    <xs:element minOccurs="1" maxOccurs="1" name="EventType" type="EventTypes"/>\r
+                    <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
+                  </xs:sequence>\r
+                  <xs:attributeGroup ref="EventAttributes"/>\r
+                </xs:complexType>\r
+              </xs:element>\r
+            </xs:sequence>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <xs:element minOccurs="0" maxOccurs="1" name="SignalEvents">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en">Module has an event that is waiting to be signaled. Event is named by GUID.</xs:documentation>\r
+          </xs:annotation>\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="unbounded" name="EventTypes">\r
+                <xs:complexType>\r
+                  <xs:sequence>\r
+                    <xs:element minOccurs="1" maxOccurs="1" name="EventType" type="EventTypes"/>\r
+                    <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
+                  </xs:sequence>\r
+                  <xs:attributeGroup ref="EventAttributes"/>\r
+                </xs:complexType>\r
+              </xs:element>\r
+            </xs:sequence>\r
+          </xs:complexType>\r
+        </xs:element>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="Externs">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">This is a child of MSA files.</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence minOccurs="1">\r
+        <xs:element minOccurs="0" maxOccurs="1" name="PcdIsDriver" type="PcdDriverTypes"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" name="TianoR8FlashMap_h" type="xs:boolean" default="false"/>\r
+        <xs:element minOccurs="0" maxOccurs="unbounded" name="Specification" type="Sentence"/>\r
+        <xs:element minOccurs="0" maxOccurs="unbounded" name="Extern">\r
+          <xs:complexType>\r
+            <xs:choice minOccurs="1" maxOccurs="1">\r
+              <xs:sequence minOccurs="0" maxOccurs="1">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en">Driver Module</xs:documentation>\r
+                </xs:annotation>\r
+                <xs:element minOccurs="0" maxOccurs="1" name="ModuleEntryPoint" type="C_NameType"/>\r
+                <xs:element minOccurs="0" maxOccurs="1" name="ModuleUnloadImage" type="C_NameType"/>\r
+              </xs:sequence>\r
+              <xs:sequence minOccurs="0" maxOccurs="1">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en">Library Module</xs:documentation>\r
+                </xs:annotation>\r
+                <xs:element minOccurs="0" maxOccurs="1" name="Constructor" type="C_NameType"/>\r
+                <xs:element minOccurs="0" maxOccurs="1" name="Destructor" type="C_NameType"/>\r
+              </xs:sequence>\r
+              <xs:sequence minOccurs="0" maxOccurs="1">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en">Allow multiple entries for DriverBinding, ComponentName, DriverConfig and DriverDiag elements. For ComponentName, DriverConfig and/or DriverDiag - you must have a 1:1 mapping to DriverBinding if the element is defined.</xs:documentation>\r
+                  <xs:documentation xml:lang="en">Permit User Defined Extern Tags</xs:documentation>\r
+                </xs:annotation>\r
+                <xs:element minOccurs="1" maxOccurs="1" name="DriverBinding" type="C_NameType"/>\r
+                <xs:element minOccurs="0" maxOccurs="1" name="ComponentName" type="C_NameType"/>\r
+                <xs:element minOccurs="0" maxOccurs="1" name="DriverConfig" type="C_NameType"/>\r
+                <xs:element minOccurs="0" maxOccurs="1" name="DriverDiag" type="C_NameType"/>\r
+              </xs:sequence>\r
+              <xs:sequence minOccurs="0" maxOccurs="1">\r
+                <xs:annotation>\r
+                  <xs:documentation xml:lang="en"> Module Call Backs</xs:documentation>\r
+                </xs:annotation>\r
+                <xs:element minOccurs="0" maxOccurs="1" name="SetVirtualAddressMapCallBack" type="C_NameType"/>\r
+                <xs:element minOccurs="0" maxOccurs="1" name="ExitBootServicesCallBack" type="C_NameType"/>\r
+              </xs:sequence>\r
+            </xs:choice>\r
+            <xs:attributeGroup ref="ExternAttributes"/>\r
+          </xs:complexType>\r
+        </xs:element>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="Filename">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">Describe the valid content of a filename This should extend PathAndFilename - Variable names not allowed here!</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:simpleContent>\r
+        <xs:extension base="PathAndFilename">\r
+          <xs:attributeGroup ref="FilenameAttributes"/>\r
+        </xs:extension>\r
+      </xs:simpleContent>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="Filenames">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">This is a list of Filenames</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence minOccurs="1">\r
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Filename"/>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="GuidDeclarations">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">This is a child of PackageSurfaceArea (SPD) </xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="C_Name" type="C_NameType"/>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="GuidValue" type="GuidType"/>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
+            </xs:sequence>\r
+            <xs:attributeGroup ref="GuidDeclarationAttributes"/>\r
+          </xs:complexType>\r
+        </xs:element>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="Guids">\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" name="GuidCNames">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en">Describe the valid content of a GUID element in and MSA file.</xs:documentation>\r
+          </xs:annotation>\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="GuidCName" type="C_NameType"/>\r
+              <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
+            </xs:sequence>\r
+            <xs:attributeGroup ref="GuidAttributes"/>\r
+          </xs:complexType>\r
+        </xs:element>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="HiiPackages">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">Describe the list of a HiiPackage elements</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" name="HiiPackage">\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="HiiCName" type="C_NameType"/>\r
+              <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
+            </xs:sequence>\r
+            <xs:attributeGroup ref="HiiPackageAttributes"/>\r
+          </xs:complexType>\r
+        </xs:element>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="Hobs">\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" name="HobTypes">\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="HobType" type="HobTypes"/>\r
+              <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
+            </xs:sequence>\r
+            <xs:attributeGroup ref="HobAttributes"/>\r
+          </xs:complexType>\r
+        </xs:element>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="IncludeHeader">\r
+    <xs:complexType>\r
+      <xs:simpleContent>\r
+        <xs:extension base="PathAndFilename">\r
+          <xs:attributeGroup ref="IncludeHeaderAttributes"/>\r
+        </xs:extension>\r
+      </xs:simpleContent>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="IndustryStdIncludes">\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" ref="IndustryStdHeader"/>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="IndustryStdHeader">\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="1" name="IncludeHeader" type="PathAndFilename"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
+      </xs:sequence>\r
+      <xs:attributeGroup ref="IndustryStdHeaderAttributes"/>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="Libraries">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">Different (Module) Instances of Libraries used ONLY in FPD Files.</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" name="Instance">\r
+          <xs:complexType>\r
+            <xs:attributeGroup ref="LibraryAttributes"/>\r
+          </xs:complexType>\r
+        </xs:element>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="LibraryClass">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">Used in MSA files. This defines what class of library is being supported = produced (library module) or consumed by a module.</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="1" name="Keyword" type="KeywordType"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
+      </xs:sequence>\r
+      <xs:attributeGroup ref="LibraryClassAttributes"/>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <!-- LAH This is SPD LibraryClassDeclarations FINAL version -->\r
+  <xs:element name="LibraryClassDeclarations">\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" name="LibraryClass">\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="IncludeHeader" type="PathAndFilename"/>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
+            </xs:sequence>\r
+            <xs:attributeGroup ref="LibraryClassDeclarationAttributes"/>\r
+          </xs:complexType>\r
+        </xs:element>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="LibraryClassDefinitions">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">This section defines what Classes of Library that this library supports. A Library may belong to multiple different library classes.</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" ref="LibraryClass"/>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="License">\r
+    <xs:complexType>\r
+      <xs:simpleContent>\r
+        <xs:extension base="Paragraph">\r
+          <xs:attribute name="URL" type="xs:anyURI" use="optional"/>\r
+        </xs:extension>\r
+      </xs:simpleContent>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="ModuleBuildOptions">\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="Options"/>\r
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="UserExtensions"/>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="ModuleSaBuildOptions">\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="0" maxOccurs="1" name="FvBinding" type="KeywordList"/>\r
+        <!-- The FfsFileNameGuid allows the Platform Integrator to specify a GUID for the FFS File Name GUID -->\r
+        <xs:element minOccurs="0" maxOccurs="1" name="FfsFileNameGuid" type="GuidType"/>\r
+        <!-- If binding is specified, you MUST specify the FfsFormatKey -->\r
+        <xs:element minOccurs="0" maxOccurs="1" name="FfsFormatKey" type="KeywordType"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="Options"/>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="ModuleDefinitions">\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="1" name="SupportedArchitectures" type="ArchListType"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" name="BinaryModule" type="xs:boolean" default="false"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" name="OutputFileBasename" type="FileNameConvention"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom">\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="unbounded" name="Cloned">\r
+                <xs:complexType>\r
+                  <xs:sequence>\r
+                    <xs:element minOccurs="1" maxOccurs="1" name="PackageGuid" type="GuidType"/>\r
+                    <xs:element minOccurs="1" maxOccurs="1" name="PackageVersion" type="VersionDataType"/>\r
+                    <xs:element minOccurs="1" maxOccurs="1" name="ModuleGuid" type="GuidType"/>\r
+                    <xs:element minOccurs="1" maxOccurs="1" name="ModuleVersion" type="VersionDataType"/>\r
+                  </xs:sequence>\r
+                  <!-- The Id is a number used to track heritage  the first entry will be 0 and increment from then on. -->\r
+                  <xs:attribute name="Id" type="xs:nonNegativeInteger" use="required"/>\r
+                  <!-- If the original module was installed from a FAR, track the FAR it came from. -->\r
+                  <xs:attribute name="FarGuid" type="GuidType" use="optional"/>\r
+                </xs:complexType>\r
+              </xs:element>\r
+            </xs:sequence>\r
+          </xs:complexType>\r
+        </xs:element>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="ModuleType" type="ModuleTypeDef">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">Describe the valid EFI Phase that the Module is designed to execute under.</xs:documentation>\r
+    </xs:annotation>\r
+  </xs:element>\r
+  <!-- Use in Final -->\r
+  <xs:element name="MsaFiles">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">MsaFiles is a child of Surface Area Package Description (SPD) files</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename" type="PathAndFilename"/>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="Options">\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" ref="Option"/>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="NonProcessedFiles">\r
+    <xs:complexType>\r
+      <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
+        <xs:element name="Filename" type="PathAndFilename"/>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="Option">\r
+    <!-- This element is used to store flags from the Tools -->\r
+    <xs:complexType>\r
+      <xs:simpleContent>\r
+        <xs:extension base="xs:normalizedString">\r
+          <xs:attributeGroup ref="OptionAttributes"/>\r
+        </xs:extension>\r
+      </xs:simpleContent>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="PackageDefinitions">\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="1" name="ReadOnly" type="xs:boolean" default="false"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" name="RePackage" type="xs:boolean" default="false"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom">\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="unbounded" name="Cloned">\r
+                <xs:complexType>\r
+                  <xs:sequence>\r
+                    <xs:element minOccurs="1" maxOccurs="1" name="PackageGuid" type="GuidType"/>\r
+                    <xs:element minOccurs="1" maxOccurs="1" name="PackageVersion" type="VersionDataType"/>\r
+                  </xs:sequence>\r
+                  <!-- The Id is a number used to track heritage  the first entry will be 0 and increment from then on. -->\r
+                  <xs:attribute name="Id" type="xs:nonNegativeInteger" use="required"/>\r
+                  <!-- If the original Package was installed from a FAR, track the FAR it came from. -->\r
+                  <xs:attribute name="FarGuid" type="GuidType" use="optional"/>\r
+                </xs:complexType>\r
+              </xs:element>\r
+            </xs:sequence>\r
+          </xs:complexType>\r
+        </xs:element>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="PackageDependencies">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">This tag is used in the Module Surface Area Description File (MSA) to track package dependencies for a module.</xs:documentation>\r
+      <xs:documentation xml:lang="en">Attributes to PackageName include Required: Usage PackageGuid PackageVesion, Optional: FeatureFlag</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" name="Package">\r
+          <xs:complexType>\r
+            <xs:attributeGroup ref="PackageAttributes"/>\r
+          </xs:complexType>\r
+        </xs:element>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="PackageHeaders">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">PackageHeaders is a child of PackageSurfaceArea (SPD) </xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" name="IncludePkgHeader">\r
+          <xs:complexType>\r
+            <xs:simpleContent>\r
+              <xs:extension base="PathAndFilename">\r
+                <xs:attributeGroup ref="PackageHeaderAttributes"/>\r
+              </xs:extension>\r
+            </xs:simpleContent>\r
+          </xs:complexType>\r
+        </xs:element>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="PackageList">\r
+    <!-- Valid for DB usage only! -->\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">This tag is used in the Framework Package Database File to track all packages (SPD files) installed in a workspace. (Database)</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename" type="DbPathAndFilename"/>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <!-- PcdBuildDefinition is a child of FPD ModuleSA element for FIXED_AT_BUILD, PATCHABLE_IN_MODULE, and FEATURE_FLAG PCDS Only! -->\r
+  <xs:element name="PcdBuildDefinition">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">Child of FPD ModuleSA element for FIXED_AT_BUILD, PATCHABLE_IN_MODULE, and FEATURE_FLAG PCDS Only!</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdData">\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="C_Name" type="C_NameType"/>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="Token" type="TokenDataType"/>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="TokenSpaceGuidCName" type="C_NameType"/>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes"/>\r
+              <!-- MaxDatumSize is only required if the DatumType is VOID* -->\r
+              <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize" type="DatumSizeLimitation"/>\r
+              <xs:element minOccurs="0" maxOccurs="1" name="Value" type="DefaultValueType"/>\r
+            </xs:sequence>\r
+            <xs:attributeGroup ref="PcdBuildDefinitionAttributes"/>\r
+          </xs:complexType>\r
+        </xs:element>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:group name="DefaultGroup">\r
+    <xs:sequence>\r
+      <xs:element minOccurs="1" maxOccurs="1" name="Value" type="DefaultValueType"/>\r
+    </xs:sequence>\r
+  </xs:group>\r
+  <xs:group name="HiiEnable">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">If HiiEnable group is specified, then HiiEnable is default true</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:sequence>\r
+      <xs:element minOccurs="1" maxOccurs="1" name="VariableName" type="HexWordArrayType"/>\r
+      <xs:element minOccurs="1" maxOccurs="1" name="VariableGuid" type="C_NameType"/>\r
+      <xs:element minOccurs="1" maxOccurs="1" name="VariableOffset" type="Hex64BitDataType"/>\r
+      <xs:element minOccurs="1" maxOccurs="1" name="HiiDefaultValue" type="DefaultValueType"/>\r
+    </xs:sequence>\r
+  </xs:group>\r
+  <xs:group name="VpdEnable">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">If VpdEnable group is specified, then VpdEnable is default true</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:sequence>\r
+      <xs:element minOccurs="1" maxOccurs="1" name="VpdOffset" type="Hex64BitDataType"/>\r
+    </xs:sequence>\r
+  </xs:group>\r
+  <xs:element name="PcdCoded">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">Child of Module Surface Area Description (MSA)</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdEntry">\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="C_Name" type="C_NameType"/>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="TokenSpaceGuidCName" type="C_NameType"/>\r
+              <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue" type="DefaultValueType"/>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
+            </xs:sequence>\r
+            <!-- MSA file declares a single usage, and must match one of the entries in what the SPD file declares as the set of possible Item Types. -->\r
+            <xs:attributeGroup ref="PcdCodedAttributes"/>\r
+          </xs:complexType>\r
+        </xs:element>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <!-- LAH This is PcdDeclarations FINAL version -->\r
+  <xs:element name="PcdDeclarations">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">PcdDeclaratins is a child of Package Surface Area Description (SPD)</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence minOccurs="1">\r
+        <xs:element maxOccurs="unbounded" name="PcdEntry">\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="C_Name" type="C_NameType"/>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="Token" type="TokenDataType"/>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="TokenSpaceGuidCName" type="C_NameType"/>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes"/>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="ValidUsage" type="PcdListType"/>\r
+              <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue" type="DefaultValueType"/>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
+            </xs:sequence>\r
+            <xs:attributeGroup ref="PcdDeclarationAttributes"/>\r
+          </xs:complexType>\r
+        </xs:element>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="FarList">\r
+    <!-- Valid for DB usage only! -->\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">This tag is used in the Framework Package Database File to track all DISTRIBUTION packages (FAR files) installed in a workspace. (Database)</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename" type="DbPathAndFilename"/>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="FfsFormatDeclarations">\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" name="FfsFormatDeclaration">\r
+          <!-- Required Attributes are the FfsFormatKeyword and SupModuleList -->\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="unbounded" ref="ProcessStep"/>\r
+            </xs:sequence>\r
+            <xs:attributeGroup ref="FfsAttributes"/>\r
+          </xs:complexType>\r
+        </xs:element>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="PpiDeclarations">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">PpiDeclarations is a child of PackageSurfaceArea (SPD) </xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="C_Name" type="C_NameType"/>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="GuidValue" type="GuidType"/>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
+            </xs:sequence>\r
+            <xs:attributeGroup ref="PpiDeclarationAttributes"/>\r
+          </xs:complexType>\r
+        </xs:element>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="PPIs">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">Provide for one or more Ppi or PpiNotify sections. </xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence minOccurs="1">\r
+        <xs:element minOccurs="0" maxOccurs="unbounded" name="Ppi">\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="PpiCName" type="C_NameType"/>\r
+              <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
+            </xs:sequence>\r
+            <xs:attributeGroup ref="PpiAttributes"/>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <xs:element minOccurs="0" maxOccurs="unbounded" name="PpiNotify">\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="PpiNotifyCName" type="C_NameType"/>\r
+              <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
+            </xs:sequence>\r
+            <xs:attributeGroup ref="PpiNotifyAttributes"/>\r
+          </xs:complexType>\r
+        </xs:element>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="ProtocolDeclarations">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">ProtocolDeclarations is a child of PackageSurfaceArea (SPD) </xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="C_Name" type="C_NameType"/>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="GuidValue" type="GuidType"/>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
+            </xs:sequence>\r
+            <xs:attributeGroup ref="ProtocolDeclarationAttributes"/>\r
+          </xs:complexType>\r
+        </xs:element>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="Protocols">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">If either Protocol or ProtocolNotify sections are needed, one or more of them should be specified within this section</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="0" maxOccurs="unbounded" name="Protocol">\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="ProtocolCName" type="C_NameType"/>\r
+              <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
+            </xs:sequence>\r
+            <xs:attributeGroup ref="ProtocolAttributes"/>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <xs:element minOccurs="0" maxOccurs="unbounded" name="ProtocolNotify">\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="ProtocolNotifyCName" type="C_NameType"/>\r
+              <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
+            </xs:sequence>\r
+            <xs:attributeGroup ref="ProtocolNotifyAttributes"/>\r
+          </xs:complexType>\r
+        </xs:element>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="ProcessStep">\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <!-- The following is a macro for Apache ANT -->\r
+        <xs:element minOccurs="0" maxOccurs="1" name="MacroDefFile">\r
+          <xs:complexType>\r
+            <xs:simpleContent>\r
+              <xs:extension base="PathAndFilename">\r
+                <xs:attribute name="MacroName" type="KeywordType" use="required"/>\r
+              </xs:extension>\r
+            </xs:simpleContent>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <!-- The following is for System Executables -->\r
+        <xs:element minOccurs="0" maxOccurs="1" name="ToolName" type="xs:NCName"/>\r
+        <xs:element minOccurs="0" maxOccurs="unbounded" name="ToolArgs" type="xs:normalizedString"/>\r
+        <xs:element minOccurs="0" maxOccurs="unbounded" name="InputPattern" type="xs:normalizedString"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" name="OutputPattern" type="xs:normalizedString"/>\r
+      </xs:sequence>\r
+      <xs:attributeGroup ref="ProcessStepAttributes"/>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="SourceFiles">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">Multiple Filenames may be specified, and they may also be scoped to a specific Architecture.</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" ref="Filename"/>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="SkuInfo">\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" name="UiSkuName">\r
+          <xs:complexType>\r
+            <xs:simpleContent>\r
+              <xs:extension base="UiNameType">\r
+                <xs:attribute name="SkuID" type="xs:nonNegativeInteger" use="required"/>\r
+              </xs:extension>\r
+            </xs:simpleContent>\r
+          </xs:complexType>\r
+        </xs:element>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="SystemTables">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">This is list of System Table elements.</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" name="SystemTableCNames">\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="SystemTableCName" type="C_NameType"/>\r
+              <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
+            </xs:sequence>\r
+            <xs:attributeGroup ref="SystemTableAttributes"/>\r
+          </xs:complexType>\r
+        </xs:element>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="UserDefinedAntTasks">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">This is a sub-element of BuildOptions</xs:documentation>\r
+      <xs:documentation xml:lang="en">Permit Users to define their own custom ANT tasks.</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" ref="AntTask"/>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="UserExtensions">\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>\r
+      </xs:sequence>\r
+      <xs:attribute name="UserID" type="xs:NCName" use="required"/>\r
+      <xs:attribute name="Identifier" type="xs:string" use="required"/>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="Variables">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">An MSA FILE list of EFI Variables described by string pair.</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" name="Variable">\r
+          <xs:annotation>\r
+            <xs:documentation xml:lang="en">This is an EFI Variable Entry</xs:documentation>\r
+          </xs:annotation>\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="VariableName" type="HexWordArrayType"/>\r
+              <xs:element minOccurs="1" maxOccurs="1" name="GuidC_Name" type="C_NameType"/>\r
+              <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
+            </xs:sequence>\r
+            <xs:attributeGroup ref="VariableAttributes"/>\r
+          </xs:complexType>\r
+        </xs:element>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="Version" type="VersionDataType"/>\r
+</xs:schema>\r
diff --git a/Conf/XMLSchema/FrameworkDataTypes.xsd b/Conf/XMLSchema/FrameworkDataTypes.xsd
new file mode 100644 (file)
index 0000000..c2074ff
--- /dev/null
@@ -0,0 +1,561 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://www.TianoCore.org/2006/Edk2.0" targetNamespace="http://www.TianoCore.org/2006/Edk2.0">\r
+  <!--\r
+    Filename: FrameworkDataTypes.xsd\r
+    \r
+    Copyright (c) 2006, Intel Corp.\r
+    All rights reserved. This program and the accompanying materials\r
+    are licensed and made available under the terms and conditions of the BSD License\r
+    which may be found at http://opensource.org/licenses/bsd-license.php\r
+    \r
+    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+    \r
+  -->\r
+  <xs:annotation>\r
+    <xs:documentation xml:lang="en">This schema defines EFI and Framework Data Types. Only simpleType are specified in this file. </xs:documentation>\r
+  </xs:annotation>\r
+  <xs:include schemaLocation="NamingConvention.xsd"/>\r
+  <xs:simpleType name="PrimaryArchListType">\r
+    <xs:list itemType="SupportedArchitectures"/>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="ArchListType">\r
+    <xs:restriction base="PrimaryArchListType">\r
+      <xs:minLength value="1"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="BlockNameType">\r
+    <xs:restriction base="UCNameType">\r
+      <xs:pattern value="\s*BLOCK[A-F0-9]{2}\s*"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="BootModeNames">\r
+    <xs:restriction base="UCNameType">\r
+      <xs:enumeration value="FULL"/>\r
+      <xs:enumeration value="MINIMAL"/>\r
+      <xs:enumeration value="NO_CHANGE"/>\r
+      <xs:enumeration value="DIAGNOSTICS"/>\r
+      <xs:enumeration value="DEFAULT"/>\r
+      <xs:enumeration value="S2_RESUME"/>\r
+      <xs:enumeration value="S3_RESUME"/>\r
+      <xs:enumeration value="S4_RESUME"/>\r
+      <xs:enumeration value="S5_RESUME"/>\r
+      <xs:enumeration value="FLASH_UPDATE"/>\r
+      <xs:enumeration value="RECOVERY_FULL"/>\r
+      <xs:enumeration value="RECOVERY_MINIMAL"/>\r
+      <xs:enumeration value="RECOVERY_NO_CHANGE"/>\r
+      <xs:enumeration value="RECOVERY_DIAGNOSTICS"/>\r
+      <xs:enumeration value="RECOVERY_DEFAULT"/>\r
+      <xs:enumeration value="RECOVERY_S2_RESUME"/>\r
+      <xs:enumeration value="RECOVERY_S3_RESUME"/>\r
+      <xs:enumeration value="RECOVERY_S4_RESUME"/>\r
+      <xs:enumeration value="RECOVERY_S5_RESUME"/>\r
+      <xs:enumeration value="RECOVERY_FLASH_UPDATE"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="BootModeUsage">\r
+    <xs:restriction base="UsageTypes">\r
+      <xs:enumeration value="ALWAYS_CONSUMED"/>\r
+      <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
+      <xs:enumeration value="ALWAYS_PRODUCED"/>\r
+      <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="BuildTargetList">\r
+    <xs:restriction base="BuildTargetUList">\r
+      <xs:minLength value="1"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="BuildTargetUList">\r
+    <xs:list itemType="BrUType"/>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="BrUType">\r
+    <xs:union memberTypes="BrType UCNameType"/>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="BrType">\r
+    <xs:restriction base="UCNameType">\r
+      <xs:enumeration value="DEBUG"/>\r
+      <xs:enumeration value="RELEASE"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="ComponentExecutionPhase">\r
+    <xs:restriction base="UCNameType">\r
+      <xs:enumeration value="MDE"/>\r
+      <xs:enumeration value="SEC"/>\r
+      <xs:enumeration value="PEI_CORE"/>\r
+      <xs:enumeration value="PEIM"/>\r
+      <xs:enumeration value="DXE_CORE"/>\r
+      <xs:enumeration value="DXE_DRIVER"/>\r
+      <xs:enumeration value="DXE_RUNTIME_DRIVER"/>\r
+      <xs:enumeration value="DXE_SAL_DRIVER"/>\r
+      <xs:enumeration value="DXE_SMM_DRIVER"/>\r
+      <xs:enumeration value="UEFI"/>\r
+      <xs:enumeration value="UEFI_APPLICATION"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="DataHubUsage">\r
+    <xs:restriction base="UsageTypes">\r
+      <xs:enumeration value="ALWAYS_CONSUMED"/>\r
+      <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
+      <xs:enumeration value="ALWAYS_PRODUCED"/>\r
+      <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
+      <xs:enumeration value="PRIVATE"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="DatumSizeLimitation">\r
+    <xs:restriction base="xs:nonNegativeInteger">\r
+      <xs:maxExclusive value="13777216"/>\r
+      <xs:pattern value="(\s)*[1-9][0-9]*(\s)*"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="DefaultValueType">\r
+    <xs:union memberTypes="xs:normalizedString Hex64BitDataType UnicodeString HexByteArrayType"/>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="EfiSectionType">\r
+    <xs:restriction base="UCNameType">\r
+      <xs:enumeration value="EFI_SECTION_FREEFORM_SUBTYPE_GUID"/>\r
+      <xs:enumeration value="EFI_SECTION_VERSION"/>\r
+      <xs:enumeration value="EFI_SECTION_USER_INTERFACE"/>\r
+      <xs:enumeration value="EFI_SECTION_DXE_DEPEX"/>\r
+      <xs:enumeration value="EFI_SECTION_PEI_DEPEX"/>\r
+      <xs:enumeration value="EFI_SECTION_PE32"/>\r
+      <xs:enumeration value="EFI_SECTION_PIC"/>\r
+      <xs:enumeration value="EFI_SECTION_TE"/>\r
+      <xs:enumeration value="EFI_SECTION_RAW"/>\r
+      <xs:enumeration value="EFI_SECTION_COMPRESSION"/>\r
+      <xs:enumeration value="EFI_SECTION_GUID_DEFINED"/>\r
+      <xs:enumeration value="EFI_SECTION_COMPATIBILITY16"/>\r
+      <xs:enumeration value="EFI_SECTION_FIRMWARE_VOLUME_IMAGE"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="EventTypes">\r
+    <xs:restriction base="UCNameType">\r
+       <xs:enumeration value="EVENT_GROUP_GUID"/>\r
+      <xs:enumeration value="EVENT_TYPE_PERIODIC_TIMER"/>\r
+      <xs:enumeration value="EVENT_TYPE_RELATIVE_TIMER"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="EventUsage">\r
+    <xs:restriction base="UsageTypes">\r
+      <xs:enumeration value="ALWAYS_CONSUMED"/>\r
+      <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
+      <xs:enumeration value="ALWAYS_PRODUCED"/>\r
+      <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
+      <xs:enumeration value="PRIVATE"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="ExecutionType">\r
+    <xs:restriction base="UCNameType">\r
+      <xs:enumeration value="REL" id="Relocatable"/>\r
+      <xs:enumeration value="NREL" id="Non-Relocatable"/>\r
+      <xs:enumeration value="XIP" id="Execute_In_Place"/>\r
+      <xs:enumeration value="PIC" id="Position_Independent_Code"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="ExternType">\r
+    <xs:restriction base="xs:normalizedString">\r
+      <xs:minLength value="1"/>\r
+      <!--<xs:pattern value="((\w)+(\W)*(\s)*)+"/>-->\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="ExternUsage">\r
+    <xs:restriction base="UsageTypes">\r
+      <xs:enumeration value="ALWAYS_CONSUMED"/>\r
+      <xs:enumeration value="ALWAYS_PRODUCED"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="FileNameUsage">\r
+    <xs:restriction base="UsageTypes">\r
+      <xs:enumeration value="ALWAYS_CONSUMED"/>\r
+      <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
+      <xs:enumeration value="ALWAYS_PRODUCED"/>\r
+      <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
+      <xs:enumeration value="PRIVATE"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="FeatureFlagExpressionType">\r
+    <xs:restriction base="xs:normalizedString">\r
+      <xs:minLength value="1"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="FrameworkComponentListType">\r
+    <xs:list itemType="FrameworkComponentTypes"/>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="FrameworkComponentTypes">\r
+    <xs:restriction base="UCNameType">\r
+      <xs:enumeration value="APRIORI"/>\r
+      <xs:enumeration value="SEC"/>\r
+      <xs:enumeration value="LIBRARY"/>\r
+      <xs:enumeration value="FV_IMAGE_FILE"/>\r
+      <xs:enumeration value="BS_DRIVER"/>\r
+      <xs:enumeration value="RT_DRIVER"/>\r
+      <xs:enumeration value="SAL_RT_DRIVER"/>\r
+      <xs:enumeration value="PE32_PEIM"/>\r
+      <xs:enumeration value="PIC_PEIM"/>\r
+      <xs:enumeration value="COMBINED_PEIM_DRIVER"/>\r
+      <xs:enumeration value="PEI_CORE"/>\r
+      <xs:enumeration value="DXE_CORE"/>\r
+      <xs:enumeration value="BS_DRIVER_EFI"/>\r
+      <xs:enumeration value="SHELLAPP"/>\r
+      <xs:enumeration value="BINARY"/>\r
+      <xs:enumeration value="LOGO"/>\r
+      <xs:enumeration value="USER_DEFINED"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="FrameworkModuleTypes">\r
+    <xs:restriction base="ModuleTypeDef">\r
+      <xs:enumeration value="BASE"/>\r
+      <xs:enumeration value="SEC"/>\r
+      <xs:enumeration value="PEI_CORE"/>\r
+      <xs:enumeration value="PEIM"/>\r
+      <xs:enumeration value="DXE_CORE"/>\r
+      <xs:enumeration value="DXE_DRIVER"/>\r
+      <xs:enumeration value="DXE_RUNTIME_DRIVER"/>\r
+      <xs:enumeration value="DXE_SAL_DRIVER"/>\r
+      <xs:enumeration value="DXE_SMM_DRIVER"/>\r
+      <xs:enumeration value="UEFI_DRIVER"/>\r
+      <xs:enumeration value="UEFI_APPLICATION"/>\r
+      <xs:enumeration value="USER_DEFINED"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="FvRegionTypes">\r
+    <xs:restriction base="UCNameType">\r
+      <xs:enumeration value="FV_MAIN"/>\r
+      <xs:enumeration value="FV_MAIN_COMPACT"/>\r
+      <xs:enumeration value="NV_STORAGE"/>\r
+      <xs:enumeration value="FV_RECOVERY"/>\r
+      <xs:enumeration value="FV_RECOVERY_FLOPPY"/>\r
+      <xs:enumeration value="FV_FILE"/>\r
+      <xs:enumeration value="CAPSULE_CARGO"/>\r
+      <xs:enumeration value="NULL"/>\r
+      <xs:enumeration value="USER_DEFINED"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="PrimaryGuidListType">\r
+    <xs:list itemType="GuidTypes"/>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="GuidListType">\r
+    <xs:restriction base="PrimaryGuidListType">\r
+      <xs:minLength value="1"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="GuidTypes">\r
+    <xs:restriction base="UCNameType">\r
+      <xs:enumeration value="DATA_HUB_RECORD"/>\r
+      <xs:enumeration value="EFI_EVENT"/>\r
+      <xs:enumeration value="EFI_SYSTEM_CONFIGURATION_TABLE"/>\r
+      <xs:enumeration value="EFI_VARIABLE"/>\r
+      <xs:enumeration value="GUID"/>\r
+      <xs:enumeration value="HII_PACKAGE_LIST"/>\r
+      <xs:enumeration value="HOB"/>\r
+      <xs:enumeration value="TOKEN_SPACE_GUID"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="GuidUsage">\r
+    <xs:restriction base="UsageTypes">\r
+      <xs:enumeration value="ALWAYS_CONSUMED"/>\r
+      <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
+      <xs:enumeration value="ALWAYS_PRODUCED"/>\r
+      <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
+      <xs:enumeration value="PRIVATE"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="HexByteArrayListType">\r
+    <xs:restriction base="xs:normalizedString">\r
+      <xs:minLength value="4"/>\r
+      <xs:pattern value="\s*((( )?0x[a-fA-F0-9]{2})(,)?)+( )?"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="HexByteArrayType">\r
+    <xs:restriction base="xs:normalizedString">\r
+      <xs:minLength value="4"/>\r
+      <xs:pattern value="((\s)*0x([a-fA-F0-9]){2}(,)?(\s)*)+"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="HexWordArrayType">\r
+    <xs:restriction base="xs:normalizedString">\r
+      <xs:minLength value="6"/>\r
+      <xs:pattern value="((\s)*0x([a-fA-F0-9]){4}(,)?(\s)*)+"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="HiiPackageUsage">\r
+    <xs:restriction base="UsageTypes">\r
+      <xs:enumeration value="ALWAYS_PRODUCED"/>\r
+      <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
+      <xs:enumeration value="PRIVATE"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="HobTypes">\r
+    <xs:restriction base="UCNameType">\r
+      <xs:enumeration value="PHIT"/>\r
+      <xs:enumeration value="MEMORY_ALLOCATION"/>\r
+      <xs:enumeration value="RESOURCE_DESCRIPTOR"/>\r
+      <xs:enumeration value="GUID_EXTENSION"/>\r
+      <xs:enumeration value="FIRMWARE_VOLUME"/>\r
+      <xs:enumeration value="CPU"/>\r
+      <xs:enumeration value="POOL"/>\r
+      <xs:enumeration value="CAPSULE_VOLUME"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="HobUsage">\r
+    <xs:restriction base="UsageTypes">\r
+      <xs:enumeration value="ALWAYS_CONSUMED"/>\r
+      <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
+      <xs:enumeration value="ALWAYS_PRODUCED"/>\r
+      <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
+      <xs:enumeration value="PRIVATE"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="IntermediateOutputType">\r
+    <xs:restriction base="UCNameType">\r
+      <xs:enumeration value="MODULE"/>\r
+      <xs:enumeration value="UNIFIED"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="LibraryUsage">\r
+    <xs:restriction base="UsageTypes">\r
+      <xs:enumeration value="ALWAYS_CONSUMED"/>\r
+      <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
+      <xs:enumeration value="ALWAYS_PRODUCED"/>\r
+      <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
+      <xs:enumeration value="PRIVATE"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="ModuleTypeDef">\r
+    <xs:restriction base="UCNameType">\r
+      <xs:enumeration value="BASE"/>\r
+      <xs:enumeration value="SEC"/>\r
+      <xs:enumeration value="PEI_CORE"/>\r
+      <xs:enumeration value="PEIM"/>\r
+      <xs:enumeration value="DXE_CORE"/>\r
+      <xs:enumeration value="DXE_DRIVER"/>\r
+      <xs:enumeration value="DXE_RUNTIME_DRIVER"/>\r
+      <xs:enumeration value="DXE_SAL_DRIVER"/>\r
+      <xs:enumeration value="DXE_SMM_DRIVER"/>\r
+      <xs:enumeration value="TOOL"/>\r
+      <xs:enumeration value="UEFI_DRIVER"/>\r
+      <xs:enumeration value="UEFI_APPLICATION"/>\r
+      <xs:enumeration value="USER_DEFINED"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="Md5sumType">\r
+    <xs:restriction base="xs:normalizedString">\r
+      <xs:pattern value="\s*[a-fA-F0-9]{32}\s*"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="PrimaryModuleListType">\r
+    <xs:list itemType="FrameworkModuleTypes"/>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="ModuleListType">\r
+    <xs:restriction base="PrimaryModuleListType">\r
+      <xs:minLength value="1"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="PackageType">\r
+    <xs:restriction base="UCNameType">\r
+      <xs:enumeration value="SOURCE"/>\r
+      <xs:enumeration value="BINARY"/>\r
+      <xs:enumeration value="MIXED"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="PackageUsage">\r
+    <xs:restriction base="UsageTypes">\r
+      <xs:enumeration value="ALWAYS_CONSUMED"/>\r
+      <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="PcdListType">\r
+    <xs:restriction base="PrimaryPcdListType">\r
+      <xs:minLength value="1"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="PrimaryPcdListType">\r
+    <xs:list itemType="PcdItemTypes"/>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="PcdTypes">\r
+    <xs:restriction base="UCNameType">\r
+      <xs:enumeration value="FIXED_AT_BUILD"/>\r
+      <xs:enumeration value="FEATURE_FLAG"/>\r
+      <xs:enumeration value="PATCHABLE_IN_MODULE"/>\r
+      <xs:enumeration value="DYNAMIC"/>\r
+      <xs:enumeration value="DYNAMIC_EX"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="PcdDriverTypes">\r
+    <xs:restriction base="UCNameType">\r
+      <xs:enumeration value="PEI_PCD_DRIVER"/>\r
+      <xs:enumeration value="DXE_PCD_DRIVER"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="PcdDataTypes">\r
+    <xs:restriction base="xs:normalizedString">\r
+      <xs:enumeration value="UINT8"/>\r
+      <xs:enumeration value="UINT16"/>\r
+      <xs:enumeration value="UINT32"/>\r
+      <xs:enumeration value="UINT64"/>\r
+      <xs:enumeration value="VOID*"/>\r
+      <xs:enumeration value="BOOLEAN"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="PcdFeatureFlagUsage">\r
+    <xs:restriction base="UsageTypes">\r
+      <xs:enumeration value="ALWAYS_PRODUCED"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="PcdItemTypes">\r
+    <xs:restriction base="UCNameType">\r
+      <xs:enumeration value="FEATURE_FLAG"/>\r
+      <xs:enumeration value="FIXED_AT_BUILD"/>\r
+      <xs:enumeration value="PATCHABLE_IN_MODULE"/>\r
+      <xs:enumeration value="DYNAMIC"/>\r
+      <xs:enumeration value="DYNAMIC_EX"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="PcdUsage">\r
+    <xs:restriction base="UsageTypes">\r
+      <xs:enumeration value="ALWAYS_CONSUMED"/>\r
+      <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
+      <xs:enumeration value="ALWAYS_PRODUCED"/>\r
+      <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="PpiNotifyUsage">\r
+    <xs:restriction base="UsageTypes">\r
+      <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="PpiUsage">\r
+    <xs:restriction base="UsageTypes">\r
+      <xs:enumeration value="ALWAYS_CONSUMED"/>\r
+      <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
+      <xs:enumeration value="ALWAYS_PRODUCED"/>\r
+      <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
+      <xs:enumeration value="PRIVATE"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="ProtocolNotifyUsage">\r
+    <xs:restriction base="UsageTypes">\r
+      <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="ProtocolUsage">\r
+    <xs:restriction base="UsageTypes">\r
+      <xs:enumeration value="ALWAYS_CONSUMED"/>\r
+      <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
+      <xs:enumeration value="ALWAYS_PRODUCED"/>\r
+      <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
+      <xs:enumeration value="TO_START"/>\r
+      <xs:enumeration value="BY_START"/>\r
+      <xs:enumeration value="PRIVATE"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="SkuListType">\r
+    <xs:restriction base="xs:normalizedString">\r
+      <xs:minLength value="1"/>\r
+      <xs:pattern value="\s*(\d)+((,)?(\s)*(\d)+)*"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="SupportedArchitectures">\r
+    <xs:restriction base="UCNameType">\r
+      <xs:enumeration value="EBC"/>\r
+      <xs:enumeration value="IA32"/>\r
+      <xs:enumeration value="X64"/>\r
+      <xs:enumeration value="IPF"/>\r
+      <xs:enumeration value="ARM"/>\r
+      <xs:enumeration value="PPC"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="SystemTableUsage">\r
+    <xs:restriction base="UsageTypes">\r
+      <xs:enumeration value="ALWAYS_CONSUMED"/>\r
+      <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
+      <xs:enumeration value="ALWAYS_PRODUCED"/>\r
+      <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
+      <xs:enumeration value="PRIVATE"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="TokenDataType">\r
+    <xs:union memberTypes="HexDoubleWordDataType  xs:nonNegativeInteger"/>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="ToolChains">\r
+    <xs:restriction base="UCNameType">\r
+      <xs:minLength value="2"/>\r
+      <xs:enumeration value="MSFT"/>\r
+      <xs:enumeration value="INTEL"/>\r
+      <xs:enumeration value="GCC"/>\r
+      <xs:enumeration value="CYGWIN"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="UiNameType">\r
+    <xs:restriction base="xs:string">\r
+      <xs:minLength value="1"/>\r
+      <xs:pattern value="[^ ].*"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="UnicodeString">\r
+    <xs:restriction base="xs:normalizedString">\r
+      <xs:minLength value="3"/>\r
+      <xs:pattern value="(\s)*L(\:)?&quot;[^&quot;]*&quot;(\s)*"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="UsageListType">\r
+    <xs:restriction base="PrimaryUsageList">\r
+      <xs:minLength value="1"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="PrimaryUsageList">\r
+    <xs:list itemType="UsageTypes"/>\r
+  </xs:simpleType>\r
+  <!-- UsageTypes describes all of the Usage Attributes that are defined in the Module Surface Area Specification -->\r
+  <xs:simpleType name="UsageTypes">\r
+    <xs:restriction base="UCNameType">\r
+      <xs:enumeration value="ALWAYS_CONSUMED"/>\r
+      <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
+      <xs:enumeration value="ALWAYS_PRODUCED"/>\r
+      <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
+      <xs:enumeration value="TO_START"/>\r
+      <xs:enumeration value="BY_START"/>\r
+      <xs:enumeration value="PRIVATE"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="VariableOffsetValues">\r
+    <xs:restriction base="xs:string">\r
+      <xs:minLength value="1"/>\r
+      <xs:pattern value="\s*\d+(:)?\d*\s*"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="VariableUsage">\r
+    <xs:restriction base="UsageTypes">\r
+      <!-- Module requires the variable entry to be set -->\r
+      <xs:enumeration value="ALWAYS_CONSUMED"/>\r
+      <!-- Module will use the variable entry if it's set -->\r
+      <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
+      <!-- Module Always will write the variable -->\r
+      <xs:enumeration value="ALWAYS_PRODUCED"/>\r
+      <!-- Module sometimes writes the variable -->\r
+      <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
+      <!-- Variable is produced and consumed only by this module -->\r
+      <xs:enumeration value="PRIVATE"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <!-- Complex Data Types -->\r
+  <xs:complexType name="DbPathAndFilename">\r
+    <xs:simpleContent>\r
+      <xs:extension base="PathAndFilename">\r
+        <xs:attribute name="FarGuid" type="GuidType" use="optional"/>\r
+        <xs:attribute name="Md5sum" type="Md5sumType"/>\r
+      </xs:extension>\r
+    </xs:simpleContent>\r
+  </xs:complexType>\r
+  <xs:complexType name="ArgsType">\r
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">\r
+      <xs:element name="Arg" type="xs:string"/>\r
+    </xs:sequence>\r
+  </xs:complexType>\r
+  <xs:complexType name="ToolType">\r
+    <xs:sequence>\r
+      <xs:element name="ToolName" type="xs:string"/>\r
+      <xs:element name="ToolArgs" type="xs:string"/>\r
+    </xs:sequence>\r
+  </xs:complexType>\r
+</xs:schema>\r
diff --git a/Conf/XMLSchema/FrameworkHeaders.xsd b/Conf/XMLSchema/FrameworkHeaders.xsd
new file mode 100644 (file)
index 0000000..cee80f2
--- /dev/null
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.TianoCore.org/2006/Edk2.0" xmlns="http://www.TianoCore.org/2006/Edk2.0">\r
+  <!--\r
+    Filename: FrameworkHeaders.xsd\r
+    \r
+    Copyright (c) 2006, Intel Corp.\r
+\r
+    All rights reserved. This program and the accompanying materials\r
+    are licensed and made available under the terms and conditions of the BSD License\r
+    which may be found at http://opensource.org/licenses/bsd-license.php\r
+    \r
+    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+    \r
+    APPROVED: 14-Jun-2006\r
+  -->\r
+  <xs:include schemaLocation="FrameworkDataElements.xsd"/>\r
+  <xs:element name="FdbHeader">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">This is the header for the Framework Package Database (DB) file.</xs:documentation>\r
+      <xs:documentation xml:lang="en">The Guid MUST change if backward compatibility breaks caused by a new release of XML Schema.</xs:documentation>\r
+      <xs:documentation xml:lang="en">The Version will change if a minor change to XML Schema has been made, but backward compatiblity is maintained.</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="1" name="DatabaseName" type="UiNameType" fixed="FrameworkDatabase"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" name="GuidValue" type="GuidType"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="Version"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="Abstract"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="Description"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="Copyright"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="License"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" name="Specification" type="Sentence" default="FRAMEWORK_BUILD_PACKAGING_SPECIFICATION   0x00000052"/>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="FarHeader">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">This is the header for the Framework Archive Manifest file.</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="1" name="FarName" type="UiNameType"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" name="GuidValue" type="GuidType"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="Version"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="Abstract"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="Description"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="Copyright"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="License"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" name="Specification" type="Sentence" default="FRAMEWORK_BUILD_PACKAGING_SPECIFICATION   0x00000052"/>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="MsaHeader">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">This header is for the Module Surface Area Description (MSA) files</xs:documentation>\r
+      <xs:documentation xml:lang="en">The Guid MUST change if the Module changes break backward compatibility.</xs:documentation>\r
+      <xs:documentation xml:lang="en">The Version MUST change if the Module changes, however, backward compatiblity is maintained.</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="1" name="ModuleName" type="UiNameType"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="ModuleType"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" name="GuidValue" type="GuidType"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="Version"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="Abstract"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="Description"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="Copyright"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="License"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" name="Specification" type="Sentence" default="FRAMEWORK_BUILD_PACKAGING_SPECIFICATION   0x00000052"/>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="PlatformHeader">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">This header is for the Framework Platform Description (FPD) files.</xs:documentation>\r
+      <xs:documentation xml:lang="en">The Guid MUST change if the FPD changes break backward compatibility.</xs:documentation>\r
+      <xs:documentation xml:lang="en">The Version MUST change if the FPD changes, however, backward compatiblity is maintained.</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="1" name="PlatformName" type="UiNameType"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" name="GuidValue" type="GuidType"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="Version"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="Abstract"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="Description"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="Copyright"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="License"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" name="Specification" type="Sentence" default="FRAMEWORK_BUILD_PACKAGING_SPECIFICATION   0x00000052"/>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="SpdHeader">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">This head is for the Surface Area Package Description file (SPD)</xs:documentation>\r
+      <xs:documentation xml:lang="en">The Guid MUST change when the contents of the file undergo MAJOR FUNCTIONALITY changes.</xs:documentation>\r
+      <xs:documentation xml:lang="en">The Version MUST change when the contents of the file undergo MINOR FUNCTIONALITY changes.</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="1" name="PackageName" type="UiNameType"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" name="GuidValue" type="GuidType"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="Version"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="Abstract"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="Description"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="Copyright"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="License"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" name="Specification" type="Sentence" default="FRAMEWORK_BUILD_PACKAGING_SPECIFICATION   0x00000052"/>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+</xs:schema>\r
diff --git a/Conf/XMLSchema/FrameworkPlatformDataElements.xsd b/Conf/XMLSchema/FrameworkPlatformDataElements.xsd
new file mode 100644 (file)
index 0000000..85ed426
--- /dev/null
@@ -0,0 +1,437 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://www.TianoCore.org/2006/Edk2.0" targetNamespace="http://www.TianoCore.org/2006/Edk2.0">\r
+  <!--\r
+    Filename: FrameworkPlatformDataElements.xsd\r
+    \r
+    Copyright (c) 2006, Intel Corp.\r
+    All rights reserved. This program and the accompanying materials\r
+    are licensed and made available under the terms and conditions of the BSD License\r
+    which may be found at http://opensource.org/licenses/bsd-license.php\r
+    \r
+    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+    \r
+  -->\r
+  <xs:annotation>\r
+    <xs:documentation xml:lang="en"> This schema defines EFI and Framework Platform Data Elements that are specific to platform creation.</xs:documentation>\r
+  </xs:annotation>\r
+  <xs:include schemaLocation="NamingConvention.xsd"/>\r
+  <xs:include schemaLocation="FrameworkDataAttributes.xsd"/>\r
+  <xs:include schemaLocation="FrameworkDataTypes.xsd"/>\r
+  <xs:include schemaLocation="FrameworkDataElements.xsd"/>\r
+  <xs:include schemaLocation="FrameworkPlatformDataTypes.xsd"/>\r
+  <xs:element name="DataArray">\r
+    <xs:complexType>\r
+      <xs:simpleContent>\r
+        <xs:extension base="HexByteArrayType">\r
+          <xs:attribute name="Name" type="xs:normalizedString" use="required"/>\r
+        </xs:extension>\r
+      </xs:simpleContent>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="DataId">\r
+    <xs:complexType>\r
+      <xs:simpleContent>\r
+        <xs:extension base="xs:NCName">\r
+          <xs:attribute name="Seq" type="xs:nonNegativeInteger" use="required"/>\r
+          <xs:attribute name="SubRegion" type="UCNameType" use="required"/>\r
+          <xs:attribute name="DataSource" type="xs:normalizedString" use="required"/>\r
+          <xs:attribute name="SourceType" type="xs:NCName" use="required"/>\r
+          <xs:attribute name="DataSize" type="HexAddressType" use="optional"/>\r
+          <xs:attribute name="Alignment" type="xs:positiveInteger" use="optional"/>\r
+        </xs:extension>\r
+      </xs:simpleContent>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="DataRegions">\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" name="FvDataRegion">\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="unbounded" ref="DataId"/>\r
+              <xs:element minOccurs="0" maxOccurs="unbounded" ref="DataArray"/>\r
+            </xs:sequence>\r
+            <xs:attribute name="Name" type="UCNameType" use="required"/>\r
+          </xs:complexType>\r
+        </xs:element>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="Flash">\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="FlashDefinitionFile"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="FvImages"/>\r
+      </xs:sequence>\r
+      <xs:attribute name="MicrocodeFile" type="PathAndFilename" use="optional"/>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <!-- Valid Flash Definition Files that can be used for a platform The UiName and Perferred tags are optional, for use with  Wizards.-->\r
+  <xs:element name="FlashDefinitionFile">\r
+    <xs:complexType>\r
+      <xs:simpleContent>\r
+        <xs:extension base="PathAndFilename">\r
+          <!-- Id will be required eventually. -->\r
+          <xs:attribute name="Id" type="KeywordType" use="optional"/>\r
+          <xs:attribute name="UiName" type="UiNameType" use="optional"/>\r
+          <xs:attribute name="Preferred" type="xs:boolean" use="optional" default="false"/>\r
+        </xs:extension>\r
+      </xs:simpleContent>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <!-- For Future Use! -->\r
+  <!-- This describes the physical layout of the hardware device, used by tools to verify different regions fit within a given number of blocks. -->\r
+  <!-- An EFI Region MUST start on a block boundary.  A region may span multiple blocks. -->\r
+  <xs:element name="FlashDevice">\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element name="PartNumber" type="xs:NCName"/>\r
+        <xs:choice>\r
+          <xs:sequence minOccurs="0">\r
+            <!-- Use this sequence for a part with fixed block sizes -->\r
+            <xs:element minOccurs="1" maxOccurs="1" name="NumBlocks" type="xs:positiveInteger"/>\r
+            <xs:element minOccurs="1" maxOccurs="1" name="BlockSize" type="HexAddressType"/>\r
+          </xs:sequence>\r
+          <xs:sequence minOccurs="0">\r
+            <!-- Use this sequence for a part with variable block sizes -->\r
+            <xs:element maxOccurs="unbounded" name="VariableBlockSize">\r
+              <xs:complexType>\r
+                <xs:simpleContent>\r
+                  <xs:extension base="HexAddressType">\r
+                    <xs:attribute name="BlockNum" type="xs:nonNegativeInteger" use="required"/>\r
+                  </xs:extension>\r
+                </xs:simpleContent>\r
+              </xs:complexType>\r
+            </xs:element>\r
+          </xs:sequence>\r
+        </xs:choice>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="FlashDeviceDefinitions">\r
+    <xs:complexType>\r
+      <xs:annotation>\r
+        <xs:documentation xml:lang="en">We allow specifying the FlashMap filename</xs:documentation>\r
+      </xs:annotation>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" ref="FlashDefinitionFile"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="FvImages"/>\r
+        <!-- DataRegions is for Future Use! -->\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="DataRegions"/>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" ref="FvImageBindingSequence"/>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="FrameworkModules">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">This is used in a Framework Platform Description (FPD) file</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" ref="ModuleSA"/>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="FvAttribute">\r
+    <xs:complexType>\r
+      <xs:attribute name="Name" type="xs:NCName" use="required"/>\r
+      <xs:attribute name="Value" type="xs:normalizedString" use="required"/>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="FwImage">\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="FvRegionName"/>\r
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="FvOption"/>\r
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="FvAttribute"/>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="FvImageBindingSequence">\r
+    <xs:complexType>\r
+      <xs:simpleContent>\r
+        <xs:extension base="ValidRegionNameListType">\r
+          <xs:attribute name="PartId" type="KeywordType" use="required"/>\r
+          <xs:attribute name="OutputFile" type="PathAndFilename" use="required"/>\r
+        </xs:extension>\r
+      </xs:simpleContent>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="FvImages">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">This section allows the user to define specific information regarding the FvImage</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:choice>\r
+        <xs:sequence minOccurs="0">\r
+          <!-- This is the current style -->\r
+          <xs:element minOccurs="0" maxOccurs="unbounded" name="NameValue">\r
+            <xs:complexType>\r
+              <xs:attribute name="Name" type="xs:string" use="required"/>\r
+              <xs:attribute name="Value" type="xs:string" use="required"/>\r
+            </xs:complexType>\r
+          </xs:element>\r
+          <xs:choice>\r
+            <xs:element minOccurs="0" maxOccurs="unbounded" name="FvImage">\r
+              <xs:complexType>\r
+                <xs:sequence>\r
+                  <xs:element minOccurs="1" maxOccurs="unbounded" name="FvImageNames" type="xs:NCName"/>\r
+                  <xs:element minOccurs="0" maxOccurs="1" name="FvImageOptions">\r
+                    <xs:complexType>\r
+                      <xs:sequence>\r
+                        <xs:element minOccurs="0" maxOccurs="unbounded" name="NameValue">\r
+                          <xs:complexType>\r
+                            <xs:attribute name="Name" type="xs:string" use="required"/>\r
+                            <xs:attribute name="Value" type="xs:string" use="required"/>\r
+                          </xs:complexType>\r
+                        </xs:element>\r
+                      </xs:sequence>\r
+                    </xs:complexType>\r
+                  </xs:element>\r
+                </xs:sequence>\r
+                <xs:attribute name="Type" type="FvImageTypes" use="optional"/>\r
+              </xs:complexType>\r
+            </xs:element>\r
+          </xs:choice>\r
+          <xs:element minOccurs="0" maxOccurs="unbounded" name="FvImageName">\r
+            <xs:complexType>\r
+              <xs:sequence>\r
+                <xs:element minOccurs="1" maxOccurs="1" name="FvImageOptions">\r
+                  <xs:complexType>\r
+                    <xs:sequence>\r
+                      <xs:element minOccurs="0" maxOccurs="unbounded" name="NameValue">\r
+                        <xs:complexType>\r
+                          <xs:attribute name="Name" type="xs:string" use="required"/>\r
+                          <xs:attribute name="Value" type="xs:string" use="required"/>\r
+                        </xs:complexType>\r
+                      </xs:element>\r
+                    </xs:sequence>\r
+                  </xs:complexType>\r
+                </xs:element>\r
+              </xs:sequence>\r
+              <xs:attribute name="Name" type="FvRegionTypes" use="required"/>\r
+            </xs:complexType>\r
+          </xs:element>\r
+        </xs:sequence>\r
+      </xs:choice>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="FvRegionName">\r
+    <xs:complexType>\r
+      <xs:simpleContent>\r
+        <xs:extension base="KeywordType">\r
+          <xs:attributeGroup ref="FvRegionNameAttributes"/>\r
+        </xs:extension>\r
+      </xs:simpleContent>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="ModuleSA">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">This element is used to specify information in the FPD ModuleSA section.</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="Libraries"/>\r
+        <!-- Only specification is allow here. We need to let this be an addtion OR, if the WORD portion MATCHES, this entry takes precedence.</xs:documentation -->\r
+        <xs:element minOccurs="0" maxOccurs="unbounded" name="Specification" type="Sentence"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="PcdBuildDefinition"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="ModuleSaBuildOptions"/>\r
+        <!-- The following BuildOptions Sections is for Legacy Ffs -->\r
+        <xs:element minOccurs="0" maxOccurs="1" name="BuildOptions">\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="0" maxOccurs="1" ref="UserDefinedAntTasks"/>\r
+              <xs:element minOccurs="0" maxOccurs="1" name="ImageEntryPoint" type="C_NameType"/>\r
+              <xs:element minOccurs="0" maxOccurs="1" name="OutputDirectory">\r
+                <xs:complexType>\r
+                  <xs:simpleContent>\r
+                    <xs:extension base="xs:anyURI">\r
+                      <xs:attribute default="UNIFIED" name="IntermediateDirectories" use="optional">\r
+                        <xs:simpleType>\r
+                          <xs:restriction base="UCNameType">\r
+                            <xs:enumeration value="MODULE"/>\r
+                            <xs:enumeration value="UNIFIED"/>\r
+                          </xs:restriction>\r
+                        </xs:simpleType>\r
+                      </xs:attribute>\r
+                    </xs:extension>\r
+                  </xs:simpleContent>\r
+                </xs:complexType>\r
+              </xs:element>\r
+              <xs:element minOccurs="0" maxOccurs="1" name="Ffs">\r
+                <xs:complexType>\r
+                  <xs:sequence>\r
+                    <xs:element minOccurs="0" maxOccurs="1" name="Attribute">\r
+                      <xs:complexType>\r
+                        <xs:sequence>\r
+                          <xs:element minOccurs="1" maxOccurs="1" name="Name" type="C_NameType"/>\r
+                          <xs:element minOccurs="1" maxOccurs="1" name="Value" type="C_NameType"/>\r
+                        </xs:sequence>\r
+                      </xs:complexType>\r
+                    </xs:element>\r
+                    <xs:element minOccurs="0" maxOccurs="1" name="Sections">\r
+                      <xs:complexType>\r
+                        <xs:sequence minOccurs="1">\r
+                          <xs:element name="Section" minOccurs="0" maxOccurs="unbounded">\r
+                            <xs:complexType>\r
+                              <xs:sequence>\r
+                                <xs:element ref=" Filenames " minOccurs="0"/>\r
+                                <xs:element name="Args" type=" ArgsType " minOccurs="0"/>\r
+                                <xs:element name="OutFile" type=" FileNameConvention " minOccurs="0"/>\r
+                                <xs:element name="OutputFileExtension" type=" xs:string " minOccurs="0"/>\r
+                                <xs:element name="ToolName" type=" ToolType " minOccurs="0"/>\r
+                              </xs:sequence>\r
+                              <xs:attributeGroup ref=" SectionsAttributes "/>\r
+                            </xs:complexType>\r
+                          </xs:element>\r
+                          <xs:element name="Sections" minOccurs="0" maxOccurs="unbounded">\r
+                            <xs:complexType>\r
+                              <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
+                                <xs:element name="Section">\r
+                                  <xs:complexType>\r
+                                    <xs:sequence>\r
+                                      <xs:element ref=" Filenames " minOccurs="0"/>\r
+                                      <xs:element name="Args" type=" ArgsType " minOccurs="0"/>\r
+                                      <xs:element name="OutFile" type=" FileNameConvention " minOccurs="0"/>\r
+                                      <xs:element name="OutputFileExtension" type=" xs:string " minOccurs="0"/>\r
+                                      <xs:element name="ToolName" type=" ToolType " minOccurs="0"/>\r
+                                    </xs:sequence>\r
+                                    <xs:attributeGroup ref="SectionsAttributes"/>\r
+                                  </xs:complexType>\r
+                                </xs:element>\r
+                              </xs:sequence>\r
+                              <xs:attributeGroup ref=" SectionsAttributes "/>\r
+                            </xs:complexType>\r
+                          </xs:element>\r
+                        </xs:sequence>\r
+                        <xs:attributeGroup ref=" SectionsAttributes "/>\r
+                      </xs:complexType>\r
+                    </xs:element>\r
+                  </xs:sequence>\r
+                </xs:complexType>\r
+              </xs:element>\r
+              <xs:element name="Sections">\r
+                <xs:complexType>\r
+                  <xs:sequence minOccurs="1">\r
+                    <xs:element name="Section" minOccurs="0" maxOccurs="unbounded">\r
+                      <xs:complexType>\r
+                        <xs:sequence>\r
+                          <xs:element ref=" Filenames " minOccurs="0"/>\r
+                          <xs:element name="Args" type=" ArgsType " minOccurs="0"/>\r
+                          <xs:element name="OutFile" type=" FileNameConvention " minOccurs="0"/>\r
+                          <xs:element name="OutputFileExtension" type=" xs:string " minOccurs="0"/>\r
+                          <xs:element name="ToolName" type=" ToolType " minOccurs="0"/>\r
+                        </xs:sequence>\r
+                        <xs:attributeGroup ref=" SectionsAttributes "/>\r
+                      </xs:complexType>\r
+                    </xs:element>\r
+                    <xs:element name="Sections" minOccurs="0" maxOccurs="unbounded">\r
+                      <xs:complexType>\r
+                        <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
+                          <xs:element name="Section">\r
+                            <xs:complexType>\r
+                              <xs:sequence>\r
+                                <xs:element ref=" Filenames " minOccurs="0"/>\r
+                                <xs:element name="Args" type=" ArgsType " minOccurs="0"/>\r
+                                <xs:element name="OutFile" type=" FileNameConvention " minOccurs="0"/>\r
+                                <xs:element name="OutputFileExtension" type=" xs:string " minOccurs="0"/>\r
+                                <xs:element name="ToolName" type=" ToolType " minOccurs="0"/>\r
+                              </xs:sequence>\r
+                              <xs:attributeGroup ref=" SectionsAttributes "/>\r
+                            </xs:complexType>\r
+                          </xs:element>\r
+                        </xs:sequence>\r
+                        <xs:attributeGroup ref=" SectionsAttributes "/>\r
+                      </xs:complexType>\r
+                    </xs:element>\r
+                  </xs:sequence>\r
+                  <xs:attributeGroup ref=" SectionsAttributes "/>\r
+                </xs:complexType>\r
+              </xs:element>\r
+              <xs:element name="Options">\r
+                <xs:complexType>\r
+                  <xs:sequence>\r
+                    <xs:element name=" Option " minOccurs="1" maxOccurs="unbounded">\r
+                      <xs:complexType>\r
+                        <xs:simpleContent>\r
+                          <xs:extension base=" xs:normalizedString ">\r
+                            <xs:attribute name="BuildTargets" type=" BuildTargetList " use="optional"/>\r
+                            <xs:attribute name="ToolChainFamily" type=" ToolsNameConvention " use="optional"/>\r
+                            <xs:attribute name="TagName" type=" ToolsNameConvention " use="optional"/>\r
+                            <xs:attribute name="ToolCommand" type=" ToolsNameConvention " use="optional"/>\r
+                            <xs:attribute name="SupArchList" type=" ArchListType " use="optional"/>\r
+                            <xs:attribute name="Platform" type=" UiNameType " use="optional"/>\r
+                          </xs:extension>\r
+                        </xs:simpleContent>\r
+                      </xs:complexType>\r
+                    </xs:element>\r
+                  </xs:sequence>\r
+                </xs:complexType>\r
+              </xs:element>\r
+            </xs:sequence>\r
+            <!-- Do not use ToolChain - it is a legacy value -->\r
+            <xs:attribute name="ToolChain" type="ToolChains" use="optional"/>\r
+            <xs:attribute name="BuildTargets" type=" BuildTargetList " use="optional"/>\r
+            <xs:attribute name="ToolChainFamily" type=" ToolsNameConvention " use="optional"/>\r
+            <xs:attribute name="TagName" type=" ToolsNameConvention " use="optional"/>\r
+            <xs:attribute name="ToolCommand" type=" ToolsNameConvention " use="optional"/>\r
+            <xs:attribute name="SupArchList" type=" ArchListType " use="optional"/>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <!-- The following Externs Section is for Legacy Ffs  -->\r
+        <xs:element minOccurs="0" maxOccurs="1" name="Externs">\r
+          <xs:complexType>\r
+            <xs:sequence minOccurs="1">\r
+              <xs:element name="PcdIsDriver" type=" PcdDriverTypes " minOccurs="0" maxOccurs="1"/>\r
+              <xs:element name="Specification" type=" Sentence " minOccurs="0" maxOccurs="unbounded"/>\r
+              <xs:element name="Extern" minOccurs="0" maxOccurs="unbounded">\r
+                <xs:complexType>\r
+                  <xs:choice minOccurs="1">\r
+                    <xs:sequence minOccurs="0" maxOccurs="1">\r
+                      <xs:element name=" ModuleEntryPoint " type=" C_NameType " minOccurs="0" maxOccurs="unbounded"/>\r
+                      <xs:element name=" ModuleUnloadImage " type=" C_NameType " minOccurs="0" maxOccurs="unbounded"/>\r
+                    </xs:sequence>\r
+                    <xs:sequence minOccurs="0" maxOccurs="1">\r
+                      <xs:element name=" Constructor " type=" C_NameType " minOccurs="0" maxOccurs="1"/>\r
+                      <xs:element name=" Destructor " type=" C_NameType " minOccurs="0" maxOccurs="1"/>\r
+                    </xs:sequence>\r
+                    <xs:sequence minOccurs="0" maxOccurs="1">\r
+                      <xs:element name=" DriverBinding " type=" C_NameType " minOccurs="0" maxOccurs="unbounded"/>\r
+                      <xs:element name=" ComponentName " type=" C_NameType " minOccurs="0" maxOccurs="unbounded"/>\r
+                      <xs:element name=" DriverConfig " type=" C_NameType " minOccurs="0" maxOccurs="unbounded"/>\r
+                      <xs:element name=" DriverDiag " type=" C_NameType " minOccurs="0" maxOccurs="unbounded"/>\r
+                    </xs:sequence>\r
+                    <xs:sequence minOccurs="0" maxOccurs="1">\r
+                      <xs:element name=" SetVirtualAddressMapCallBack " type=" C_NameType " minOccurs="0" maxOccurs="unbounded"/>\r
+                      <xs:element name=" ExitBootServicesCallBack " type=" C_NameType " minOccurs="0" maxOccurs="unbounded"/>\r
+                    </xs:sequence>\r
+                  </xs:choice>\r
+                  <xs:attributeGroup ref=" ExternAttributes "/>\r
+                </xs:complexType>\r
+              </xs:element>\r
+            </xs:sequence>\r
+          </xs:complexType>\r
+        </xs:element>\r
+      </xs:sequence>\r
+      <xs:attributeGroup ref="MsaAttributes"/>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="FvOption">\r
+    <xs:complexType>\r
+      <xs:attribute name="Name" type="xs:NCName" use="required"/>\r
+      <xs:attribute name="Value" type="xs:normalizedString" use="required"/>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="PlatformList">\r
+    <!-- Valid for DB usage only! -->\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">This is used in the FrameworkDatabase file</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename" type="DbPathAndFilename"/>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+</xs:schema>\r
diff --git a/Conf/XMLSchema/FrameworkPlatformDataTypes.xsd b/Conf/XMLSchema/FrameworkPlatformDataTypes.xsd
new file mode 100644 (file)
index 0000000..014289f
--- /dev/null
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://www.TianoCore.org/2006/Edk2.0" targetNamespace="http://www.TianoCore.org/2006/Edk2.0">\r
+  <!--\r
+    Filename: FrameworkPlatformDataTypes.xsd\r
+    \r
+    Copyright (c) 2006, Intel Corp.\r
+    All rights reserved. This program and the accompanying materials\r
+    are licensed and made available under the terms and conditions of the BSD License\r
+    which may be found at http://opensource.org/licenses/bsd-license.php\r
+    \r
+    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+  -->\r
+  <xs:annotation>\r
+    <xs:documentation xml:lang="en"> This schema defines EFI and Framework Platform Data Types.</xs:documentation>\r
+  </xs:annotation>\r
+  <xs:include schemaLocation="NamingConvention.xsd"/>\r
+  <xs:include schemaLocation="FrameworkDataAttributes.xsd"/>\r
+  <xs:include schemaLocation="FrameworkDataTypes.xsd"/>\r
+  <xs:simpleType name="EfiFfsFileTypes">\r
+    <xs:restriction base="UCNameType">\r
+      <xs:enumeration value="EFI_FV_FILETYPE"/>\r
+      <xs:enumeration value="EFI_FV_FILETYPE_ALL"/>\r
+      <xs:enumeration value="EFI_FV_FILETYPE_RAW"/>\r
+      <xs:enumeration value="EFI_FV_FILETYPE_FREEFORM"/>\r
+      <xs:enumeration value="EFI_FV_FILETYPE_SECURITY_CORE"/>\r
+      <xs:enumeration value="EFI_FV_FILETYPE_PEI_CORE"/>\r
+      <xs:enumeration value="EFI_FV_FILETYPE_DXE_CORE"/>\r
+      <xs:enumeration value="EFI_FV_FILETYPE_PEIM"/>\r
+      <xs:enumeration value="EFI_FV_FILETYPE_DRIVER"/>\r
+      <xs:enumeration value="EFI_VF_FILETYPE_COMBINED_PEIM_DRIVER"/>\r
+      <xs:enumeration value="EFI_VF_FILETYPE_APPLICATION"/>\r
+      <xs:enumeration value="EFI_VF_FILETYPE_FIRMWARE_VOLUME_IMAGE"/>\r
+      <xs:enumeration value="EFI_FV_FILETYPE_FFS_PAD"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="EfiFvAreaType">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">The list of valid EFI Area Types</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:restriction base="UCNameType">\r
+      <xs:enumeration value="EFI_FLASH_AREA_RECOVERY_BIOS"/>\r
+      <xs:enumeration value="EFI_FLASH_AREA_MAIN_BIOS"/>\r
+      <xs:enumeration value="EFI_FLASH_AREA_PAL_B"/>\r
+      <xs:enumeration value="EFI_FLASH_AREA_RESERVED_03"/>\r
+      <xs:enumeration value="EFI_FLASH_AREA_RESERVED_04"/>\r
+      <xs:enumeration value="EFI_FLASH_AREA_DMI_FRU"/>\r
+      <xs:enumeration value="EFI_FLASH_AREA_OEM_BINARY"/>\r
+      <xs:enumeration value="EFI_FLASH_AREA_RESERVED_07"/>\r
+      <xs:enumeration value="EFI_FLASH_AREA_RESERVED_08"/>\r
+      <xs:enumeration value="EFI_FLASH_AREA_RESERVED_09"/>\r
+      <xs:enumeration value="EFI_FLASH_AREA_RESERVED_0A"/>\r
+      <xs:enumeration value="EFI_FLASH_AREA_EFI_VARIABLES"/>\r
+      <xs:enumeration value="EFI_FLASH_AREA_MCA_LOG"/>\r
+      <xs:enumeration value="EFI_FLASH_AREA_SMBIOS_LOG"/>\r
+      <xs:enumeration value="EFI_FLASH_AREA_FTW_BACKUP"/>\r
+      <xs:enumeration value="EFI_FLASH_AREA_FTW_STATE"/>\r
+      <xs:enumeration value="EFI_FLASH_AREA_UNUSED"/>\r
+      <xs:enumeration value="EFI_FLASH_AREA_GUID_DEFINED"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="EfiFvAttributeListType">\r
+    <xs:list itemType="EfiFvAttributeType"/>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="EfiFvAttributeType">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">The list of EFI_FLASH_AREA Attributes</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:restriction base="UCNameType">\r
+      <xs:enumeration value="EFI_FLASH_AREA_FV"/>\r
+      <xs:enumeration value="EFI_FLASH_AREA_MEMMAPPED_FV"/>\r
+      <xs:enumeration value="EFI_FLASH_AREA_SUBFV"/>\r
+      <xs:enumeration value="EFI_FLASH_AREA_REQUIRED"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="EfiNameGuidType">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">Right now, only EFI_FLASH_MAP_HOB_GUID is defined</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:restriction base="UCNameType">\r
+      <xs:enumeration value="EFI_FLASH_MAP_HOB_GUID"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="FfsDataAlignmentType">\r
+    <xs:restriction base="xs:nonNegativeInteger">\r
+      <xs:pattern value="\s*[0-7]{1}\s*"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="FfsNameType">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en"> This defines what an FFS Name can consist of.</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:restriction base="xs:string">\r
+      <xs:pattern value="\s*[a-zA-Z][_\-a-zA-Z0-9]*(\.)?[a-zA-Z0-9]*\s*"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="FlashSize">\r
+    <xs:restriction base="xs:string">\r
+      <xs:enumeration value="256KB"/>\r
+      <xs:enumeration value="512KB"/>\r
+      <xs:enumeration value="1MB"/>\r
+      <xs:enumeration value="2MB"/>\r
+      <xs:enumeration value="4MB"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="FvImageTypes">\r
+    <xs:restriction base="xs:NCName">\r
+      <xs:enumeration value="Attributes"/>\r
+      <xs:enumeration value="Options"/>\r
+      <xs:enumeration value="Components"/>\r
+      <xs:enumeration value="ImageName"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="FvSubRegionTypes">\r
+    <xs:restriction base="UCNameType">\r
+      <xs:enumeration value="NV_VARIABLE_STORE"/>\r
+      <xs:enumeration value="MICROCODE"/>\r
+      <xs:enumeration value="NV_FTW_WORKING"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="ValidRegionNameListType">\r
+    <xs:list itemType="KeywordType"/>\r
+  </xs:simpleType>\r
+</xs:schema>\r
diff --git a/Conf/XMLSchema/NamingConvention.xsd b/Conf/XMLSchema/NamingConvention.xsd
new file mode 100644 (file)
index 0000000..978a365
--- /dev/null
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.TianoCore.org/2006/Edk2.0" xmlns="http://www.TianoCore.org/2006/Edk2.0">\r
+  <!--\r
+    Filename: NamingConvention.xsd\r
+    \r
+    Copyright (c) 2006, Intel Corp.\r
+    All rights reserved. This program and the accompanying materials\r
+    are licensed and made available under the terms and conditions of the BSD License\r
+    which may be found at http://opensource.org/licenses/bsd-license.php\r
+    \r
+    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+    \r
+  -->\r
+  <xs:annotation>\r
+    <xs:documentation xml:lang="en"> This schema defines various data types and naming conventions including: base name, filename and directory naming conventions. These are all simple data types.</xs:documentation>\r
+  </xs:annotation>\r
+  <xs:simpleType name="C_NameType">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en"> C_Names must start with either an underscore (_) character followed by one or more alpha characters, followed by any combination of underscore or alphanumeric characters.</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:restriction base="xs:string">\r
+      <xs:pattern value="\s*(_)*[a-zA-Z]+((_)*[a-zA-Z0-9]*)*\s*"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="FileNameConvention">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en"> This defines what a Filename is: Alphanumeric characters and optional underscore (_) or dash (-) characters, followed by a optional dot and more alphanumeric characters. </xs:documentation>\r
+    </xs:annotation>\r
+    <xs:restriction base="xs:string">\r
+      <xs:pattern value="\s*[a-zA-Z](\.?[\-_a-zA-Z0-9]+)*\s*"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="GuidType">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en"> The GUID data was a union of GuidType1 and GuidType2; standardizing on GuidType2. </xs:documentation>\r
+    </xs:annotation>\r
+    <xs:union memberTypes="GuidType2"/>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="GuidType1">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en"> This defines the minimum specification for a GUID Array which is 8 Hex Digits - 4 Hex Digits - 4 Hex Digits - 8 Hex Bytes, the last 16 Hex Digits can be enclosed in sqiggle {} brackets.</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:restriction base="xs:string">\r
+      <xs:pattern value="\s*0x[a-fA-F0-9]{1,8},( )*0x[a-fA-F0-9]{1,4},( )*0x[a-fA-F0-9]{1,4}(,( )*\{)?(,?( )*0x[a-fA-F0-9]{1,2}){8}( )*(\})?\s*"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="GuidType2">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en"> A GUID must contain five different Hexadecimal character sets that are separated by a dash (-) character. </xs:documentation>\r
+    </xs:annotation>\r
+    <xs:restriction base="xs:string">\r
+      <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*"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="Hex64BitDataType">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">Define a Hex 64 Bit Value to be 0x[a-f0-9]{16}</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:restriction base="xs:string">\r
+      <xs:pattern value="\s*(0x)?[a-fA-F0-9]{1,16}\s*"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="HexAddressType">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">Define a Hex Address, 0x[a-fA-F0-9]{1,16}</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:restriction base="xs:string">\r
+      <xs:pattern value="\s*0x[a-fA-F0-9]{1,16}\s*"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="HexByteDataType">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">Define a Hex Byte Value to be 0x[a-f0-9]{2}</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:restriction base="xs:string">\r
+      <xs:pattern value="\s*(0x)?[a-fA-F0-9]{1,2}\s*"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="HexDataType">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">Define a Hex Value to be 0x[a-f0-9]+</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:restriction base="xs:string">\r
+      <xs:pattern value="\s*0x[a-fA-F0-9]+\s*"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="HexDigitType">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">Define a Hex Diget to be 0x[a-f0-9]</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:restriction base="xs:string">\r
+      <xs:pattern value="\s*[a-fA-F0-9]{1}\s*"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="HexDoubleWordDataType">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">Define a Hex Double Word Value to be 0x[a-f0-9]{8}</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:restriction base="xs:string">\r
+      <xs:pattern value="\s*0x[a-fA-F0-9]{1,8}\s*"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="HexWordDataType">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">Define a Hex Word Value to be 0x[a-f0-9]{4}</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:restriction base="xs:string">\r
+      <xs:pattern value="\s*0x[a-fA-F0-9]{1,4}\s*"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="KeywordList">\r
+    <xs:restriction base="xs:string">\r
+      <xs:minLength value="1"/>\r
+      <xs:pattern value="\s*[a-zA-Z]+(\ *_*[a-zA-Z0-9]*)*\s*"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="KeywordType">\r
+    <xs:restriction base="xs:normalizedString">\r
+      <xs:pattern value="\s*[a-zA-Z]+(_*[a-zA-Z0-9]*)*\s*"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="Paragraph">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">This describes the normal text of a paragraph that can be used in a license or description tag.</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:restriction base="xs:string"/>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="PathAndFilename">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en"> Naming convention for a path and file name</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:union memberTypes="xs:normalizedString xs:anyURI"/>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="Polarity">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">Limit Polarity vaild values to 0 and 1</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:restriction base="xs:int">\r
+      <xs:pattern value="\s*0|1\s*"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="Sentence">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en"> This data type requires two or more words </xs:documentation>\r
+    </xs:annotation>\r
+    <xs:restriction base="xs:normalizedString">\r
+      <xs:pattern value="\s*(\w+\W*)+( )+(\W*\w*\W*\s*)*"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="ToolsNameConvention">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">This data type is used for ToolCommand, ToolChainFamily and TagName.</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:restriction base="xs:NCName">\r
+      <xs:pattern value="\s*[a-zA-Z][a-zA-Z0-9]*\s*"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="UCNameType">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en"> Definition of a UpperCase Name, which can be any combination of upper case characters followed by zero or more underscore and/or uppercase alphanumeric characters </xs:documentation>\r
+    </xs:annotation>\r
+    <xs:restriction base="xs:string">\r
+      <xs:pattern value="\s*[A-Z]+(_*[A-Z0-9]*)*\s*"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="VersionDataType">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en"> Definition of a Version Number, which is one or more strings of decimal digits separated by dots. </xs:documentation>\r
+      <xs:documentation>\r
+        The algorithm to compare two versions A and B is as follows. if A==B, then A is the same version as B. Otherwise, say A is a1.a2.a3...an and B is b1.b2.b3...bn. For the first pair (ai, bi), for i less than n and i less than m, where ai is not equal to bi, if ai is less than bi, then A is less than B. If ai is greater than bi, then A is greater than B.   \r
+      </xs:documentation>\r
+    </xs:annotation>\r
+    <xs:restriction base="xs:string">\r
+      <xs:pattern value="\s*\d+(\.\d+)*\s*"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+  <xs:simpleType name="Zero">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">Define Zero as a vaild value</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:restriction base="xs:int">\r
+      <xs:pattern value="\s*0\s*"/>\r
+    </xs:restriction>\r
+  </xs:simpleType>\r
+</xs:schema>\r
diff --git a/Conf/XMLSchema/SurfaceArea.xsd b/Conf/XMLSchema/SurfaceArea.xsd
new file mode 100644 (file)
index 0000000..d79e574
--- /dev/null
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.TianoCore.org/2006/Edk2.0" xmlns="http://www.TianoCore.org/2006/Edk2.0">\r
+  <!--\r
+    Filename: SurfaceArea.xsd\r
+    \r
+    Copyright (c) 2006, Intel Corp.\r
+    All rights reserved. This program and the accompanying materials\r
+    are licensed and made available under the terms and conditions of the BSD License\r
+    which may be found at http://opensource.org/licenses/bsd-license.php\r
+    \r
+    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+    \r
+    APPROVED: 14-Jun-2006\r
+  -->\r
+  <xs:include schemaLocation="FrameworkHeaders.xsd"/>\r
+  <xs:include schemaLocation="FrameworkDataElements.xsd"/>\r
+  <xs:include schemaLocation="FrameworkPlatformDataElements.xsd"/>\r
+  <xs:annotation>\r
+    <xs:documentation xml:lang="en">This describes the valid content of a FrameworkDatabase (DB) File.</xs:documentation>\r
+  </xs:annotation>\r
+  <xs:element name="FrameworkDatabase">\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="FdbHeader"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="PackageList"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="PlatformList"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="FarList"/>\r
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="UserExtensions"/>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:annotation>\r
+    <xs:documentation xml:lang="en">This describes the valid content of a Framework Platform Description (FPD) File.</xs:documentation>\r
+  </xs:annotation>\r
+  <xs:element name="PlatformSurfaceArea">\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="PlatformHeader"/>\r
+        <!-- This section will be for new definitions of how we put together the Framework Binary Images -->\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="PlatformDefinitions"/>\r
+        <!-- The Flash section is the legacy implementation of Flash -->\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="Flash"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="FrameworkModules"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="DynamicPcdBuildDefinitions"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="BuildOptions"/>\r
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="UserExtensions"/>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:annotation>\r
+    <xs:documentation xml:lang="en">This describes the valid content for a Module Surface Area Description (MSA) file.</xs:documentation>\r
+  </xs:annotation>\r
+  <xs:element name="ModuleSurfaceArea">\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="MsaHeader"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="ModuleDefinitions"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="LibraryClassDefinitions"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="SourceFiles"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="NonProcessedFiles"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="PackageDependencies"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="Protocols"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="Events"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="Hobs"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="PPIs"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="Variables"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="BootModes"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="SystemTables"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="DataHubs"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="HiiPackages"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="Guids"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="Externs"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="PcdCoded"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="ModuleBuildOptions"/>\r
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="UserExtensions"/>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:annotation>\r
+    <xs:documentation xml:lang="en">This describes the valid content for a Package Surface Area Description (SPD) file.</xs:documentation>\r
+  </xs:annotation>\r
+  <xs:element name="PackageSurfaceArea">\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="SpdHeader"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="PackageDefinitions"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="LibraryClassDeclarations"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="IndustryStdIncludes"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="MsaFiles"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="PackageHeaders"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="GuidDeclarations"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="ProtocolDeclarations"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="PpiDeclarations"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="PcdDeclarations"/>\r
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="UserExtensions"/>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <!-- This element is listed here, only because we are using elements from both the FrameworkDataElements and FrameworkPlatformDataElements files. -->\r
+  <xs:element name="PlatformDefinitions">\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <!-- This is the list of ALL architectures that are supported by this Platform -->\r
+        <xs:element minOccurs="1" maxOccurs="1" name="SupportedArchitectures" type="ArchListType"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" name="BuildTargets" type="BuildTargetList"/>\r
+        <xs:element default="UNIFIED" name="IntermediateDirectories" type="IntermediateOutputType"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" name="OutputDirectory" type="xs:anyURI"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" name="ForceDebugTarget" type="KeywordType"/>\r
+        <!-- SkuInfo is only defined if Sku enabled -->\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="SkuInfo"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="FlashDeviceDefinitions"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="FfsFormatDeclarations"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom">\r
+          <xs:complexType>\r
+            <xs:sequence>\r
+              <xs:element minOccurs="1" maxOccurs="unbounded" name="Cloned">\r
+                <xs:complexType>\r
+                  <xs:sequence>\r
+                    <xs:element minOccurs="1" maxOccurs="1" name="PlatformGuid" type="GuidType"/>\r
+                    <xs:element minOccurs="1" maxOccurs="1" name="PlatformVersion" type="VersionDataType"/>\r
+                  </xs:sequence>\r
+                  <!-- The Id is a number used to track heritage  the first entry will be 0 and increment from then on. -->\r
+                  <xs:attribute name="Id" type="xs:nonNegativeInteger" use="required"/>\r
+                  <!-- If the original module was installed from a FAR, track the FAR it came from. -->\r
+                  <xs:attribute name="FarGuid" type="GuidType" use="optional"/>\r
+                </xs:complexType>\r
+              </xs:element>\r
+            </xs:sequence>\r
+          </xs:complexType>\r
+        </xs:element>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+</xs:schema>\r
diff --git a/Conf/XMLSchema/SurfaceArea.xsdconfig b/Conf/XMLSchema/SurfaceArea.xsdconfig
new file mode 100644 (file)
index 0000000..aa52361
--- /dev/null
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!--\r
+Copyright (c) 2006, Intel Corp.\r
+All rights reserved. This program and the accompanying materials\r
+are licensed and made available under the terms and conditions of the BSD License\r
+which may be found at http://opensource.org/licenses/bsd-license.php\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+-->\r
+<xb:config xmlns:xb="http://xml.apache.org/xmlbeans/2004/02/xbean/config">\r
+  <xb:namespace uri="http://www.TianoCore.org/2006/Edk2.0">\r
+    <xb:package>org.tianocore</xb:package>\r
+  </xb:namespace>\r
+</xb:config>\r
+\r
diff --git a/Conf/target.template b/Conf/target.template
new file mode 100644 (file)
index 0000000..907a717
--- /dev/null
@@ -0,0 +1,71 @@
+#\r
+#  Copyright (c) 2006, Intel Corporation\r
+#\r
+#  All rights reserved. This program and the accompanying materials\r
+#  are licensed and made available under the terms and conditions of the BSD License\r
+#  which accompanies this distribution.  The full text of the license may be found at\r
+#  http://opensource.org/licenses/bsd-license.php\r
+\r
+#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+#  Filename: target.template\r
+#\r
+#  ALL Paths are Relative to WORKSPACE\r
+\r
+#  Separate multiple LIST entries with a SINGLE SPACE character, do not use comma characters.\r
+#  Un-set an option by either commenting out the line, or not setting a value.\r
+\r
+#\r
+#  PROPERTY              Type       Use         Description\r
+#  ----------------      --------   --------    -----------------------------------------------------------\r
+#  ACTIVE_PLATFORM       Filename   Recommended Specify the WORKSPACE relative Path and Filename \r
+#                                               of the platform FPD file that will be used for the build\r
+#                                               This line is required if and only if the current working\r
+#                                               directory does not contain one or more FPD files.\r
+ACTIVE_PLATFORM       = EdkNt32Pkg/Nt32.fpd\r
+\r
+#  TARGET                List       Optional    Zero or more of the following: DEBUG, RELEASE, \r
+#                                               UserDefined; separated by a space character.  \r
+#                                               If the line is missing or no value is specified, all \r
+#                                               valid targets specified in the FPD file will attempt \r
+#                                               to be built.  The following line will build all platform\r
+#                                               targets.\r
+TARGET                = DEBUG\r
+\r
+#  TARGET_ARCH           List       Optional    What kind of architecture is the binary being target for. \r
+#                                               One, or more, of the following, IA32, IPF, X64, EBC or ARM.\r
+#                                               Multiple values can be specified on a single line, using \r
+#                                               space charaters to separate the values.  These are used \r
+#                                               during the parsing of an FPD file, restricting the build\r
+#                                               output target(s.)\r
+#                                               The Build Target ARCH is determined by a logical AND of:\r
+#                                               FPD BuildOptions: <SupportedArchitectures> tag\r
+#                                               If not specified, then all valid architectures specified \r
+#                                               in the FPD file, for which tools are available, will be \r
+#                                               built.\r
+# TARGET_ARCH           = \r
+\r
+#  TOOL_DEFINITION_FILE  Filename  Optional   Specify the name of the filename to use for specifying \r
+#                                             the tools to use for the build.  If not specified, \r
+#                                             tools_def.txt will be used for the build.  This file \r
+#                                             MUST be located in the WORKSPACE/Tools/Conf directory.\r
+TOOL_CHAIN_CONF       = Tools/Conf/tools_def.txt\r
+\r
+#  TAGNAME               List      Optional   Specify the name(s) of the tools_def.txt TagName to use.  \r
+#                                             If not specified, all applicable TagName tools will be \r
+#                                             used for the build.  The list uses space character separation.\r
+TOOL_CHAIN_TAG        = MYTOOLS\r
+\r
+#  MULTIPLE_THREAD       FLAG      Optional   Flag to enable multi-thread build. If not specified, default\r
+#                                             is "Disable". If your computer is multi-core or multiple CPUs, \r
+#                                             enabling this feature will bring much benefit. For multi-thread \r
+#                                             built, the log will write to ${BUILD_DIR}/build.log. \r
+#                                             This feature is only for PLATFORM build, and clean, cleanall or\r
+#                                             stand-alone module build is still using the normal way. \r
+MULTIPLE_THREAD       = Enable\r
+\r
+# MAX_CONCURRENT_THREAD_NUMBER  NUMBER  Optional  The number of concurrent threads. Default is 2. Recommend to \r
+#                                                 set this value to one more than the number of your compurter\r
+#                                                 cores or CPUs. \r
+MAX_CONCURRENT_THREAD_NUMBER = 2
\ No newline at end of file
diff --git a/Conf/tools_def.template b/Conf/tools_def.template
new file mode 100644 (file)
index 0000000..b016dd1
--- /dev/null
@@ -0,0 +1,685 @@
+#\r
+#  Copyright (c) 2006, Intel Corporation\r
+#\r
+#  All rights reserved. This program and the accompanying materials\r
+#  are licensed and made available under the terms and conditions of the BSD License\r
+#  which accompanies this distribution.  The full text of the license may be found at\r
+#  http://opensource.org/licenses/bsd-license.php\r
+#\r
+#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+\r
+IDENTIFIER = Default TOOL_CHAIN_CONF\r
+\r
+####################################################################################\r
+#\r
+# format: TARGET_TOOLCHAIN_ARCH_COMMANDTYPE_ATTRIBUTE = <string>\r
+# priorty:\r
+#         TARGET_TOOLCHAIN_ARCH_COMMANDTYPE_ATTRIBUTE (Highest)\r
+#         ******_TOOLCHAIN_ARCH_COMMANDTYPE_ATTRIBUTE\r
+#         TARGET_*********_ARCH_COMMANDTYPE_ATTRIBUTE\r
+#         ******_*********_ARCH_COMMANDTYPE_ATTRIBUTE\r
+#         TARGET_TOOLCHAIN_****_COMMANDTYPE_ATTRIBUTE\r
+#         ******_TOOLCHAIN_****_COMMANDTYPE_ATTRIBUTE\r
+#         TARGET_*********_****_COMMANDTYPE_ATTRIBUTE\r
+#         ******_*********_****_COMMANDTYPE_ATTRIBUTE\r
+#         TARGET_TOOLCHAIN_ARCH_***********_ATTRIBUTE\r
+#         ******_TOOLCHAIN_ARCH_***********_ATTRIBUTE\r
+#         TARGET_*********_ARCH_***********_ATTRIBUTE\r
+#         ******_*********_ARCH_***********_ATTRIBUTE\r
+#         TARGET_TOOLCHAIN_****_***********_ATTRIBUTE\r
+#         ******_TOOLCHAIN_****_***********_ATTRIBUTE\r
+#         TARGET_*********_****_***********_ATTRIBUTE\r
+#         ******_*********_****_***********_ATTRIBUTE (Lowest)\r
+#\r
+####################################################################################\r
+####################################################################################\r
+#\r
+# Supported Tool Chains\r
+# =====================\r
+#   VS2003           - Microsoft Visual Studio .NET 2003\r
+#   VS2005EXP        - Microsoft Visual Studio 2005 Express Edition\r
+#   VS2005STD        - Microsoft Visual Studio 2005 Standard Edition\r
+#   VS2005PRO        - Microsoft Visual Studio 2005 Professional Edition \r
+#   VS2005TEAMSUITE  - Microsoft Visual Studio 2005 Team Suite Edition\r
+#   WINDDK3790x1830  - Microsoft Windows DDK 3790.1830\r
+#   UINIXGCC         - UINIX GCC\r
+#   CYGWINGCC        - CygWin GCC\r
+#   ICC              - Intel C Compiler V9.1\r
+#   MYTOOLS          - Settings compatible with previous versions of tools_def.template\r
+#\r
+####################################################################################\r
+\r
+####################################################################################\r
+#\r
+# Microsoft Visual Studio .NET 2003 (IA-32 only, with Link Time Code Generation) \r
+#\r
+####################################################################################\r
+\r
+*_VS2003_IA32_*_FAMILY          = MSFT\r
+\r
+*_VS2003_IA32_CC_NAME           = cl.exe  \r
+*_VS2003_IA32_VFRPP_NAME        = cl.exe\r
+*_VS2003_IA32_SLINK_NAME        = lib.exe\r
+*_VS2003_IA32_DLINK_NAME        = link.exe\r
+*_VS2003_IA32_ASMLINK_NAME      = link.exe\r
+*_VS2003_IA32_APP_NAME          = cl.exe \r
+*_VS2003_IA32_PP_NAME           = cl.exe \r
+*_VS2003_IA32_ASM_NAME          = ml.exe\r
+*_VS2003_IA32_ASM_EXT           = .asm\r
+*_VS2003_IA32_PCH_NAME          = cl.exe \r
+\r
+##################\r
+# IA32 definitions\r
+##################\r
+*_VS2003_IA32_*_PATH            = C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin\r
+*_VS2003_IA32_*_DPATH           = C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE\r
+\r
+*_VS2003_IA32_APP_FLAGS         = /nologo /P /TC \r
+*_VS2003_IA32_PP_FLAGS          = /nologo /P /TC /FI${DEST_DIR_DEBUG}/AutoGen.h \r
+*_VS2003_IA32_VFRPP_FLAGS       = /nologo /P /TC /DVFRCOMPILE\r
+DEBUG_VS2003_IA32_CC_FLAGS      = /nologo /W4 /WX /Gy /c /D UNICODE /D EFI32 /O1ib2 /GL /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /EHs-c- /GF /Gs8192 /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yu${DEST_DIR_DEBUG}/AutoGen.h /Zi /Gm\r
+RELEASE_VS2003_IA32_CC_FLAGS    = /nologo /W4 /WX /Gy /c /D UNICODE /D EFI32 /O1ib2 /GL /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /EHs-c- /GF /Gs8192 /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yu${DEST_DIR_DEBUG}/AutoGen.h\r
+DEBUG_VS2003_IA32_PCH_FLAGS     = /nologo /W4 /WX /Gy /c /D UNICODE /D EFI32 /O1ib2 /GL /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /EHs-c- /GF /Gs8192 /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yc /TC /Zi /Gm\r
+RELEASE_VS2003_IA32_PCH_FLAGS   = /nologo /W4 /WX /Gy /c /D UNICODE /D EFI32 /O1ib2 /GL /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /EHs-c- /GF /Gs8192 /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yc /TC\r
+DEBUG_VS2003_IA32_ASM_FLAGS     = /nologo /W3 /WX /c /coff /Cx /Zd /W0 /Zi\r
+RELEASE_VS2003_IA32_ASM_FLAGS   = /nologo /W3 /WX /c /coff /Cx /Zd /W0\r
+*_VS2003_IA32_SLINK_FLAGS       = /nologo /LTCG\r
+DEBUG_VS2003_IA32_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /MACHINE:I386 /LTCG /DLL /ENTRY:${ENTRYPOINT} /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /DEBUG   \r
+RELEASE_VS2003_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /MACHINE:I386 /LTCG /DLL /ENTRY:${ENTRYPOINT} /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text\r
+\r
+####################################################################################\r
+#\r
+# Microsoft Device Driver Kit 3790.1830 (IA-32, X64, Itanium, with Link Time Code Generation)\r
+#\r
+####################################################################################\r
+\r
+*_WINDDK3790x1830_*_*_FAMILY        = MSFT\r
+\r
+*_WINDDK3790x1830_*_CC_NAME         = cl.exe\r
+*_WINDDK3790x1830_*_VFRPP_NAME      = cl.exe\r
+*_WINDDK3790x1830_*_SLINK_NAME      = lib.exe\r
+*_WINDDK3790x1830_*_DLINK_NAME      = link.exe\r
+*_WINDDK3790x1830_*_ASMLINK_NAME    = link.exe\r
+*_WINDDK3790x1830_*_PP_NAME         = cl.exe\r
+*_WINDDK3790x1830_*_APP_NAME        = cl.exe\r
+*_WINDDK3790x1830_*_PCH_NAME        = cl.exe\r
+\r
+*_WINDDK3790x1830_*_APP_FLAGS       = /nologo /P /TC\r
+*_WINDDK3790x1830_*_SLINK_FLAGS     = /nologo /LTCG\r
+*_WINDDK3790x1830_*_VFRPP_FLAGS     = /nologo /P /TC /DVFRCOMPILE\r
+##################\r
+# IA32 definitions\r
+##################\r
+*_WINDDK3790x1830_IA32_ASM_NAME          = ml.exe\r
+*_WINDDK3790x1830_IA32_ASM_EXT           = .asm\r
+*_WINDDK3790x1830_IA32_*_PATH            = C:\WINDDK\3790.1830\bin\x86\r
+*_WINDDK3790x1830_IA32_*_DPATH           = C:\WINDDK\3790.1830\bin\x86\r
+*_WINDDK3790x1830_IA32_ASMLINK_PATH      = C:\WINDDK\3790.1830\bin\bin16\\r
+\r
+*_WINDDK3790x1830_IA32_PP_FLAGS          = /nologo /P /E /TC /FI${DEST_DIR_DEBUG}/AutoGen.h \r
+DEBUG_WINDDK3790x1830_IA32_CC_FLAGS      = /nologo /W4 /WX /Gy /c /D UNICODE /D EFI32 /O1ib2 /GL /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /EHs-c- /GF /Gs8192 /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yu${DEST_DIR_DEBUG}/AutoGen.h /Zi /Gm \r
+RELEASE_WINDDK3790x1830_IA32_CC_FLAGS    = /nologo /W4 /WX /Gy /c /D UNICODE /D EFI32 /O1ib2 /GL /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /EHs-c- /GF /Gs8192 /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yu${DEST_DIR_DEBUG}/AutoGen.h\r
+DEBUG_WINDDK3790x1830_IA32_PCH_FLAGS     = /nologo /W4 /WX /Gy /c /D UNICODE /D EFI32 /O1ib2 /GL /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /EHs-c- /GF /Gs8192 /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yc /TC /Zi /Gm \r
+RELEASE_WINDDK3790x1830_IA32_PCH_FLAGS   = /nologo /W4 /WX /Gy /c /D UNICODE /D EFI32 /O1ib2 /GL /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /EHs-c- /GF /Gs8192 /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yc /TC\r
+DEBUG_WINDDK3790x1830_IA32_ASM_FLAGS     = /nologo /W3 /WX /c /coff /Cx /Zd /W0 /Zi  \r
+RELEASE_WINDDK3790x1830_IA32_ASM_FLAGS   = /nologo /W3 /WX /c /coff /Cx /Zd /W0\r
+DEBUG_WINDDK3790x1830_IA32_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /MACHINE:I386 /LTCG /DLL /ENTRY:${ENTRYPOINT} /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /DEBUG   \r
+RELEASE_WINDDK3790x1830_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /MACHINE:I386 /LTCG /DLL /ENTRY:${ENTRYPOINT} /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text\r
+*_WINDDK3790x1830_IA32_ASMLINK_FLAGS     = /link /nologo /tiny\r
+\r
+##################\r
+# x64 definitions\r
+##################\r
+*_WINDDK3790x1830_X64_ASM_NAME          = ml64.exe\r
+*_WINDDK3790x1830_X64_ASM_EXT           = .asm\r
+*_WINDDK3790x1830_X64_*_PATH            = C:\WINDDK\3790.1830\bin\win64\x86\amd64\r
+*_WINDDK3790x1830_X64_ASMLINK_PATH      = C:\WINDDK\3790.1830\bin\bin16\\r
+\r
+*_WINDDK3790x1830_X64_PP_FLAGS          = /nologo /P /TC /FI${DEST_DIR_DEBUG}/AutoGen.h \r
+DEBUG_WINDDK3790x1830_X64_CC_FLAGS      = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /D EFIX64 /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yu${DEST_DIR_DEBUG}/AutoGen.h /Zi /Gm /EHs-c- /GF\r
+RELEASE_WINDDK3790x1830_X64_CC_FLAGS    = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /D EFIX64 /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yu${DEST_DIR_DEBUG}/AutoGen.h /EHs-c- /GF\r
+DEBUG_WINDDK3790x1830_X64_PCH_FLAGS     = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /D EFIX64 /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yc /TC /Zi /Gm /EHs-c- /GF\r
+RELEASE_WINDDK3790x1830_X64_PCH_FLAGS   = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /D EFIX64 /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yc /TC /EHs-c- /GF\r
+DEBUG_WINDDK3790x1830_X64_ASM_FLAGS     = /nologo /W3 /WX /c /Cx /Zd /Zi\r
+RELEASE_WINDDK3790x1830_X64_ASM_FLAGS   = /nologo /W3 /WX /c /Cx /Zd\r
+DEBUG_WINDDK3790x1830_X64_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /Machine:AMD64 /LTCG /DLL /ENTRY:${ENTRYPOINT} /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /DEBUG \r
+RELEASE_WINDDK3790x1830_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /Machine:AMD64 /LTCG /DLL /ENTRY:${ENTRYPOINT} /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text\r
+\r
+##################\r
+# IPF definitions\r
+##################\r
+*_WINDDK3790x1830_IPF_ASM_NAME          = ias.exe\r
+*_WINDDK3790x1830_IPF_ASM_EXT           = .s\r
+*_WINDDK3790x1830_IPF_*_PATH            = C:\WINDDK\3790.1830\bin\win64\x86\r
+\r
+*_WINDDK3790x1830_IPF_PP_FLAGS          = /nologo /P /TC /FI${DEST_DIR_DEBUG}/AutoGen.h\r
+DEBUG_WINDDK3790x1830_IPF_CC_FLAGS      = /GS- /nologo /W4 /WX /EHs-c- /Gy /c /Os /GL /X /D EFI64 /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yu${DEST_DIR_DEBUG}/AutoGen.h /Zi\r
+RELEASE_WINDDK3790x1830_IPF_CC_FLAGS    = /GS- /nologo /W4 /WX /EHs-c- /Gy /c /Os /GL /X /D EFI64 /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yu${DEST_DIR_DEBUG}/AutoGen.h\r
+DEBUG_WINDDK3790x1830_IPF_PCH_FLAGS     = /GS- /nologo /W4 /WX /EHs-c- /Gy /c /Os /GL /X /D EFI64 /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yc /TC /Zi\r
+RELEASE_WINDDK3790x1830_IPF_PCH_FLAGS   = /GS- /nologo /W4 /WX /EHs-c- /Gy /c /Os /GL /X /D EFI64 /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yc /TC\r
+DEBUG_WINDDK3790x1830_IPF_ASM_FLAGS     = -N us -X explicit -M ilp64 -N so -W4 -d debug\r
+RELEASE_WINDDK3790x1830_IPF_ASM_FLAGS   = -N us -X explicit -M ilp64 -N so -W4\r
+DEBUG_WINDDK3790x1830_IPF_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF,ICF /IGNORE:4086 /MAP /ALIGN:32 /MACHINE:IA64 /ENTRY:${ENTRYPOINT} /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MAP:${DEST_DIR_DEBUG}/${BASE_NAME}.map /PDB:${DEST_DIR_DEBUG}/${BASE_NAME}.pdb /DEBUG\r
+RELEASE_WINDDK3790x1830_IPF_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF.ICF /IGNORE:4086 /MAP /ALIGN:32 /MACHINE:IA64 /ENTRY:${ENTRYPOINT} /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MAP:${DEST_DIR_DEBUG}/${BASE_NAME}.map /PDB:${DEST_DIR_DEBUG}/${BASE_NAME}.pdb \r
+\r
+##################\r
+# EBC definitions\r
+##################\r
+*_WINDDK3790x1830_EBC_*_FAMILY      = INTEL\r
+*_WINDDK3790x1830_EBC_PP_NAME       = iec.exe\r
+*_WINDDK3790x1830_EBC_CC_NAME       = iec.exe\r
+*_WINDDK3790x1830_EBC_DLINK_NAME    = link.exe\r
+*_WINDDK3790x1830_EBC_SLINK_NAME    = link.exe\r
+*_WINDDK3790x1830_EBC_*_PATH        = C:\Program Files\Intel\EBC\Bin\r
+*_WINDDK3790x1830_EBC_*_SPATH       = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib"\r
+\r
+*_WINDDK3790x1830_EBC_PP_FLAGS      = /nologo /P /TC /FI${DEST_DIR_DEBUG}/AutoGen.h \r
+*_WINDDK3790x1830_EBC_CC_FLAGS      = /nologo /c /W3 /WX /FI${DEST_DIR_DEBUG}/AutoGen.h /DSTRING_ARRAY_NAME=${BASE_NAME}Strings \r
+*_WINDDK3790x1830_EBC_SLINK_FLAGS   = /lib /NOLOGO /MACHINE:EBC\r
+*_WINDDK3790x1830_EBC_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:${ENTRYPOINT} /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER\r
+\r
+##################\r
+# ASL definitions\r
+##################\r
+*_WINDDK3790x1830_*_ASL_FAMILY  = INTEL\r
+*_WINDDK3790x1830_*_ASL_NAME    = iasl.exe\r
+*_WINDDK3790x1830_*_ASL_PATH    = C:\ASL\r
+\r
+####################################################################################\r
+#\r
+# Microsoft Visual Studio 2005 Express Edition (IA-32 Only, with no Link Time Code Generation) \r
+#\r
+####################################################################################\r
+\r
+####################################################################################\r
+#\r
+# Microsoft Visual Studio 2005 Standard Edition (IA-32 Only, with no Link Time Code Generation) \r
+#\r
+####################################################################################\r
+\r
+####################################################################################\r
+#\r
+# Microsoft Visual Studio 2005 Professional Edition (IA-32 and X64 Only, with Link Time Code Generation) \r
+#\r
+####################################################################################\r
+\r
+*_VS2005PRO_*_*_FAMILY       = MSFT\r
+\r
+*_VS2005PRO_*_CC_NAME        = cl.exe\r
+*_VS2005PRO_*_SLINK_NAME     = lib.exe\r
+*_VS2005PRO_*_DLINK_NAME     = link.exe\r
+*_VS2005PRO_*_ASMLINK_NAME   = link.exe\r
+*_VS2005PRO_*_PP_NAME        = cl.exe\r
+*_VS2005PRO_*_APP_NAME       = cl.exe\r
+*_VS2005PRO_*_VFRPP_NAME     = cl.exe\r
+*_VS2005PRO_*_PCH_NAME       = cl.exe\r
+\r
+*_VS2005PRO_*_SLINK_FLAGS       = /NOLOGO /LTCG\r
+*_VS2005PRO_*_APP_FLAGS         = /nologo /P /TC\r
+*_VS2005PRO_*_PP_FLAGS          = /nologo /P /TC /FI${DEST_DIR_DEBUG}/AutoGen.h \r
+*_VS2005PRO_*_VFRPP_FLAGS       = /nologo /P /TC /DVFRCOMPILE\r
+\r
+##################\r
+# IA32 definitions\r
+##################\r
+*_VS2005PRO_IA32_ASM_NAME     = ml.exe\r
+*_VS2005PRO_IA32_ASM_EXT      = .asm\r
+*_VS2005PRO_IA32_*_PATH       = C:\Program Files\Microsoft Visual Studio 8\Vc\bin\r
+*_VS2005PRO_IA32_*_DPATH      = C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\r
+*_VS2005PRO_IA32_ASM_PATH     = C:\WINDDK\3790.1830\bin\x86\r
+*_VS2005PRO_IA32_ASMLINK_PATH = C:\WINDDK\3790.1830\bin\bin16\\r
+\r
+DEBUG_VS2005PRO_IA32_CC_FLAGS      = /GS- /nologo /W4 /WX /Gy /c /D UNICODE /D EFI32 /O1ib2 /GL /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /EHs-c- /GF /Gs8192 /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yu${DEST_DIR_DEBUG}/AutoGen.h /Zi /Gm\r
+RELEASE_VS2005PRO_IA32_CC_FLAGS    = /GS- /nologo /W4 /WX /Gy /c /D UNICODE /D EFI32 /O1ib2 /GL /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /EHs-c- /GF /Gs8192 /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yu${DEST_DIR_DEBUG}/AutoGen.h\r
+DEBUG_VS2005PRO_IA32_PCH_FLAGS     = /GS- /nologo /W4 /WX /Gy /c /D UNICODE /D EFI32 /O1ib2 /GL /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /EHs-c- /GF /Gs8192 /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yc /TC /Zi /Gm\r
+RELEASE_VS2005PRO_IA32_PCH_FLAGS   = /GS- /nologo /W4 /WX /Gy /c /D UNICODE /D EFI32 /O1ib2 /GL /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /EHs-c- /GF /Gs8192 /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yc /TC\r
+DEBUG_VS2005PRO_IA32_ASM_FLAGS     = /nologo /W3 /WX /c /coff /Cx /Zd /W0 /Zi  \r
+RELEASE_VS2005PRO_IA32_ASM_FLAGS   = /nologo /W3 /WX /c /coff /Cx /Zd /W0\r
+DEBUG_VS2005PRO_IA32_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /MACHINE:I386 /LTCG /DLL /ENTRY:${ENTRYPOINT} /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /DEBUG   \r
+RELEASE_VS2005PRO_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /MACHINE:I386 /LTCG /DLL /ENTRY:${ENTRYPOINT} /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text\r
+*_VS2005PRO_IA32_ASMLINK_FLAGS     = /link /nologo /tiny\r
+\r
+##################\r
+# x64 definitions\r
+##################\r
+*_VS2005PRO_X64_ASM_NAME       = ml64.exe\r
+*_VS2005PRO_X64_ASM_EXT        = .asm\r
+*_VS2005PRO_X64_*_PATH         = C:\Program Files\Microsoft Visual Studio 8\Vc\bin\x86_amd64\r
+*_VS2005PRO_X64_*_DPATH        = C:\Program Files\Microsoft Visual Studio 8\VC\bin\x86_amd64;C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\r
+*_VS2005PRO_X64_ASMLINK_PATH   = C:\WINDDK\3790.1830\bin\bin16\\r
+\r
+DEBUG_VS2005PRO_X64_CC_FLAGS      = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /D EFIX64 /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /EHs-c- /GF /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yu${DEST_DIR_DEBUG}/AutoGen.h /Zi /Gm\r
+RELEASE_VS2005PRO_X64_CC_FLAGS    = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /D EFIX64 /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /EHs-c- /GF /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yu${DEST_DIR_DEBUG}/AutoGen.h\r
+DEBUG_VS2005PRO_X64_PCH_FLAGS     = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /D EFIX64 /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /EHs-c- /GF /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yc /TC /Zi /Gm\r
+RELEASE_VS2005PRO_X64_PCH_FLAGS   = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /D EFIX64 /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /EHs-c- /GF /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yc /TC\r
+DEBUG_VS2005PRO_X64_ASM_FLAGS     = /nologo /W3 /WX /c /Cx /Zd /Zi\r
+RELEASE_VS2005PRO_X64_ASM_FLAGS   = /nologo /W3 /WX /c /Cx /Zd\r
+DEBUG_VS2005PRO_X64_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /Machine:AMD64 /LTCG /DLL /ENTRY:${ENTRYPOINT} /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /DEBUG \r
+RELEASE_VS2005PRO_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /Machine:AMD64 /LTCG /DLL /ENTRY:${ENTRYPOINT} /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text\r
+\r
+##################\r
+# EBC definitions\r
+##################\r
+*_VS2005PRO_EBC_*_FAMILY    = INTEL\r
+*_VS2005PRO_EBC_PP_NAME     = iec.exe\r
+*_VS2005PRO_EBC_CC_NAME     = iec.exe\r
+*_VS2005PRO_EBC_DLINK_NAME  = link.exe\r
+*_VS2005PRO_EBC_SLINK_NAME  = link.exe\r
+*_VS2005PRO_EBC_*_PATH      = C:\Program Files\Intel\EBC\Bin\r
+*_VS2005PRO_EBC_*_SPATH     = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib"\r
+\r
+*_VS2005PRO_EBC_PP_FLAGS    = /nologo /P /TC /FI${DEST_DIR_DEBUG}/AutoGen.h \r
+*_VS2005PRO_EBC_CC_FLAGS    = /nologo /c /W3 /WX /FI${DEST_DIR_DEBUG}/AutoGen.h /DSTRING_ARRAY_NAME=${BASE_NAME}Strings \r
+*_VS2005PRO_EBC_SLINK_FLAGS = /lib /NOLOGO /MACHINE:EBC\r
+*_VS2005PRO_EBC_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:${ENTRYPOINT} /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER\r
+\r
+##################\r
+# ASL definitions\r
+##################\r
+*_VS2005PRO_*_ASL_FAMILY  = INTEL\r
+*_VS2005PRO_*_ASL_NAME    = iasl.exe\r
+*_VS2005PRO_*_ASL_PATH    = C:\ASL\r
+\r
+####################################################################################\r
+#\r
+# Microsoft Visual Studio 2005 Team Suite Edition (IA-32, X64, and Itanium, with Link Time Code Generation) \r
+#\r
+####################################################################################\r
+\r
+\r
+####################################################################################\r
+#\r
+# MINGW32\r
+#\r
+# You can build a mingw32 toolchain by downloading the script package called\r
+# x86-mingw32-build.sh from the mingw project home page. It will walk you through\r
+# some options and explain what to do.\r
+#\r
+####################################################################################\r
+\r
+*_MINGW_*_*_FAMILY        = GCC\r
+\r
+*_MINGW_IA32_CC_NAME      = gcc\r
+*_MINGW_IA32_SLINK_NAME   = ar\r
+*_MINGW_IA32_DLINK_NAME   = ld\r
+*_MINGW_IA32_ASM_NAME     = gcc\r
+*_MINGW_IA32_PP_NAME      = gcc\r
+*_MINGW_IA32_VFRPP_NAME   = gcc\r
+\r
+*_MINGW_*_CC_FLAGS        = -Os -fshort-wchar -fno-strict-aliasing -Wall -Werror -c -include ${DEST_DIR_DEBUG}/AutoGen.h\r
+*_MINGW_*_DLINK_FLAGS     = -nostdlib -O2 --gc-sections --dll --export-all-symbols --entry _${ENTRYPOINT} --file-alignment 0x20 --section-alignment 0x20 \r
+*_MINGW_*_ASM_FLAGS       = -c -imacros ${DEST_DIR_DEBUG}/AutoGen.h  -DASM_PFX(name)=_##name\r
+*_MINGW_*_PP_FLAGS        = -E -x assembler-with-cpp -include ${DEST_DIR_DEBUG}/AutoGen.h\r
+*_MINGW_*_VFRPP_FLAGS     = -x c -E -P -DVFRCOMPILE\r
+*_MINGW_*_ASM_EXT         = .S\r
+\r
+*_MINGW_IA32_*_PATH       = /opt/mingw/i386-mingw32/bin/\r
+\r
+####################################################################################\r
+#\r
+# Unix GCC\r
+#\r
+####################################################################################\r
+\r
+*_UNIXGCC_*_*_FAMILY        = GCC\r
+*_UNIXGCC_*_*_FAMILY        = GCC\r
+\r
+*_UNIXGCC_IA32_CC_NAME      = gcc\r
+*_UNIXGCC_IA32_SLINK_NAME   = ar\r
+*_UNIXGCC_IA32_DLINK_NAME   = ld\r
+*_UNIXGCC_IA32_ASM_NAME     = gcc\r
+*_UNIXGCC_IA32_PP_NAME      = gcc\r
+*_UNIXGCC_IA32_VFRPP_NAME   = gcc\r
+\r
+*_UNIXGCC_X64_CC_NAME       = gcc\r
+*_UNIXGCC_X64_SLINK_NAME    = ar\r
+*_UNIXGCC_X64_DLINK_NAME    = ld\r
+*_UNIXGCC_X64_ASM_NAME      = gcc\r
+*_UNIXGCC_X64_PP_NAME       = gcc\r
+*_UNIXGCC_X64_VFRPP_NAME    = gcc\r
+\r
+*_UNIXGCC_IA32_CC_FLAGS     = -Os -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-missing-braces -c -include ${DEST_DIR_DEBUG}/AutoGen.h\r
+*_UNIXGCC_X64_CC_FLAGS      = -Os -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-missing-braces -c -include ${DEST_DIR_DEBUG}/AutoGen.h -D_EFI_P64\r
+*_UNIXGCC_*_DLINK_FLAGS     = -nostdlib -O2 --gc-sections --dll --export-all-symbols --entry _${ENTRYPOINT} --file-alignment 0x20 --section-alignment 0x20 \r
+*_UNIXGCC_*_ASM_FLAGS       = -c -imacros ${DEST_DIR_DEBUG}/AutoGen.h -DASM_PFX(name)=_##name\r
+*_UNIXGCC_*_PP_FLAGS        = -E -x assembler-with-cpp -include ${DEST_DIR_DEBUG}/AutoGen.h\r
+*_UNIXGCC_*_VFRPP_FLAGS     = -x c -E -P -DVFRCOMPILE\r
+*_UNIXGCC_*_ASM_EXT         = .S\r
+\r
+*_UNIXGCC_IA32_*_PATH       = /opt/tiano/i386-tiano-pe/i386-tiano-pe/bin\r
+*_UNIXGCC_X64_*_PATH        = /opt/tiano/x86_64-pc-mingw64/x86_64-pc-mingw64/bin\r
+\r
+\r
+####################################################################################\r
+#\r
+# Cygwin GCC\r
+#\r
+####################################################################################\r
+\r
+*_CYGWINGCC_X64_*_FAMILY      = GCC\r
+*_CYGWINGCC_IA32_*_FAMILY     = GCC\r
+\r
+*_CYGWINGCC_IA32_CC_NAME      = gcc\r
+*_CYGWINGCC_IA32_SLINK_NAME   = ar\r
+*_CYGWINGCC_IA32_DLINK_NAME   = ld\r
+*_CYGWINGCC_IA32_ASM_NAME     = gcc\r
+*_CYGWINGCC_IA32_PP_NAME      = gcc\r
+*_CYGWINGCC_IA32_VFRPP_NAME   = gcc\r
+\r
+*_CYGWINGCC_X64_CC_NAME       = gcc\r
+*_CYGWINGCC_X64_SLINK_NAME    = ar\r
+*_CYGWINGCC_X64_DLINK_NAME    = ld\r
+*_CYGWINGCC_X64_ASM_NAME      = gcc\r
+*_CYGWINGCC_X64_PP_NAME       = gcc\r
+*_CYGWINGCC_X64_VFRPP_NAME    = gcc\r
+\r
+*_CYGWINGCC_IA32_CC_FLAGS     = -Os -fshort-wchar -fno-strict-aliasing -Wall -Werror -c -include ${DEST_DIR_DEBUG}/AutoGen.h\r
+*_CYGWINGCC_X64_CC_FLAGS      = -Os -fshort-wchar -fno-strict-aliasing -Wall -Werror -c -include ${DEST_DIR_DEBUG}/AutoGen.h -D_EFI_P64\r
+*_CYGWINGCC_*_DLINK_FLAGS     = -nostdlib -O2 --gc-sections --dll --export-all-symbols --entry _${ENTRYPOINT} --file-alignment 0x20 --section-alignment 0x20 \r
+*_CYGWINGCC_*_ASM_FLAGS       = -c -imacros ${DEST_DIR_DEBUG}/AutoGen.h -DASM_PFX(name)=_##name\r
+*_CYGWINGCC_*_PP_FLAGS        = -E -x assembler-with-cpp -include ${DEST_DIR_DEBUG}/AutoGen.h\r
+*_CYGWINGCC_*_VFRPP_FLAGS     = -x c -E -P -DVFRCOMPILE\r
+*_CYGWINGCC_*_ASM_EXT         = .S\r
+\r
+*_CYGWINGCC_IA32_*_PATH       = c:/Cygwin/opt/tiano/i386-tiano-pe/i386-tiano-pe/bin\r
+*_CYGWINGCC_X64_*_PATH        = c:/Cygwin/opt/tiano/x86_64-pc-mingw64/x86_64-pc-mingw64/bin\r
+*_CYGWINGCC_*_*_DPATH         = c:/Cygwin/bin\r
+\r
+####################################################################################\r
+#\r
+# Elf GCC - This configuration is used to compile on Linux boxes to produce elf\r
+#           binaries.\r
+#\r
+####################################################################################\r
+\r
+\r
+*_ELFGCC_*_*_FAMILY        = GCC\r
+\r
+*_ELFGCC_IA32_CC_NAME      = gcc\r
+*_ELFGCC_IA32_SLINK_NAME   = ar\r
+*_ELFGCC_IA32_DLINK_NAME   = ld\r
+*_ELFGCC_IA32_ASM_NAME     = gcc\r
+*_ELFGCC_IA32_PP_NAME      = gcc\r
+*_ELFGCC_IA32_VFRPP_NAME   = gcc\r
+\r
+*_ELFGCC_IA32_CC_FLAGS     = -g -fshort-wchar -fno-strict-aliasing -Wall -malign-double -c -include ${DEST_DIR_DEBUG}/AutoGen.h -DSTRING_ARRAY_NAME=${BASE_NAME}Strings\r
+*_ELFGCC_*_DLINK_FLAGS     = -nostdlib -n -q -Ttext 0x220 --entry ${ENTRYPOINT} -u ${ENTRYPOINT}\r
+*_ELFGCC_*_ASM_FLAGS       = -c -imacros ${DEST_DIR_DEBUG}/AutoGen.h -DASM_PFX(name)=name\r
+*_ELFGCC_*_PP_FLAGS        = -E -x assembler-with-cpp -include ${DEST_DIR_DEBUG}/AutoGen.h\r
+*_ELFGCC_*_VFRPP_FLAGS     = -x c -E -P -DVFRCOMPILE\r
+*_ELFGCC_*_ASM_EXT         = .S\r
+\r
+*_ELFGCC_IA32_*_PATH       = /usr/bin\r
+\r
+\r
+####################################################################################\r
+#\r
+# Mixed x64 - This configuration is used to compile C code with gcc and assemble\r
+#             with the Microsoft assembler.\r
+#\r
+####################################################################################\r
+\r
+*_MIXED_X64_CC_FAMILY    = GCC\r
+*_MIXED_X64_SLINK_FAMILY = GCC\r
+*_MIXED_X64_DLINK_FAMILY = GCC\r
+*_MIXED_X64_ASM_FAMILY   = MSFT\r
+*_MIXED_X64_PP_FAMILY    = MSFT\r
+\r
+*_MIXED_X64_CC_NAME      = gcc\r
+*_MIXED_X64_SLINK_NAME   = ar\r
+*_MIXED_X64_DLINK_NAME   = ld\r
+*_MIXED_X64_ASM_NAME     = gcc\r
+*_MIXED_X64_PP_NAME      = cl.exe\r
+\r
+*_MIXED_X64_CC_FLAGS     = -Os -fshort-wchar -fno-strict-aliasing -Wall -Werror -c -include ${DEST_DIR_DEBUG}/AutoGen.h -D_EFI_P64\r
+*_MIXED_*_DLINK_FLAGS    = -nostdlib -O2 --gc-sections --dll --export-all-symbols --entry _${ENTRYPOINT} --file-alignment 0x20 --section-alignment 0x20 \r
+*_MIXED_X64_PP_FLAGS     = /nologo /P /TC /FI${DEST_DIR_DEBUG}/AutoGen.h \r
+\r
+*_MIXED_X64_ASM_NAME     = ml64.exe\r
+*_MIXED_X64_ASM_PATH     = C:/WINDDK/3790.1830/bin/win64/x86/amd64\r
+*_MIXED_X64_CC_PATH      = C:/cygwin/opt/tiano/x86_64-pc-mingw64/x86_64-pc-mingw64/bin\r
+*_MIXED_X64_PP_PATH      = C:/WINDDK/3790.1830/bin/win64/x86/amd64\r
+*_MIXED_X64_SLINK_PATH   = C:/cygwin/opt/tiano/x86_64-pc-mingw64/x86_64-pc-mingw64/bin\r
+*_MIXED_X64_DLINK_PATH   = C:/cygwin/opt/tiano/x86_64-pc-mingw64/x86_64-pc-mingw64/bin\r
+*_MIXED_X64_ASMLINK_PATH = C:/WINDDK/3790.1830/bin/bin16/\r
+\r
+DEBUG_MIXED_X64_ASM_FLAGS     = /nologo /W3 /WX /c /Cx /Zd /Zi\r
+RELEASE_MIXED_X64_ASM_FLAGS   = /nologo /W3 /WX /c /Cx /Zd\r
+\r
+####################################################################################\r
+#\r
+# Intel EFI Byte Code Compiler (Template)\r
+#\r
+####################################################################################\r
+# \r
+# *_*_EBC_*_FAMILY     = INTEL\r
+# *_*_EBC_PP_NAME      = iec.exe\r
+# *_*_EBC_CC_NAME      = iec.exe\r
+# *_*_EBC_SLINK_NAME   = link.exe\r
+# *_*_EBC_*_PATH       = C:\Program Files\Intel\EBC\Bin\r
+# *_*_EBC_*_SPATH      = C:\Program Files\Intel\EBC\Lib\EbcLib.lib\r
+# \r
+# *_*_EBC_SLINK_FLAGS   = /lib /NOLOGO /MACHINE:EBC\r
+# *_*_EBC_PP_FLAGS      = /nologo /P /TC /FI${DEST_DIR_DEBUG}/AutoGen.h \r
+# *_*_EBC_CC_FLAGS      = /nologo /FAcs /c /W3 /WX /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h\r
+# *_*_EBC_DLINK_FLAGS   = /NOLOGO /MACHINE:EBC /OPT:REF /NODEFAULTLIB /ENTRY:${ENTRYPOINT} /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER\r
+# \r
+####################################################################################\r
+#\r
+# Intel ACPI Source Language Compiler (Template)\r
+#\r
+####################################################################################\r
+# \r
+# *_*_*_ASL_FAMILY  = INTEL\r
+# *_*_*_ASL_NAME    = iasl.exe\r
+# *_*_*_ASL_PATH    = C:\ASL\r
+# \r
+####################################################################################\r
+#\r
+# Microsoft ACPI Source Language Compiler (Template)\r
+#\r
+####################################################################################\r
+# \r
+# *_*_*_ASL_FAMILY  = MSFT\r
+# *_*_*_ASL_NAME    = asl.exe\r
+# *_*_*_ASL_PATH    = C:\ASL\r
+# \r
+\r
+\r
+####################################################################################\r
+#\r
+# Intel(R) C++ Compiler Version 9.1\r
+#\r
+#   IPF  - Intel(R) C++ Compiler for Itanium(R)Version 9.1  Build 20060928 Package ID: W_CC_C_9.1.032\r
+#   ASL  - Intel ACPI Source Language COmpiler\r
+#\r
+####################################################################################\r
+*_ICC_*_*_FAMILY             = MSFT\r
+\r
+*_ICC_*_CC_NAME              = cl.exe\r
+*_ICC_*_SLINK_NAME           = lib.exe\r
+*_ICC_*_DLINK_NAME           = link.exe\r
+*_ICC_*_ASMLINK_NAME         = link.exe\r
+*_ICC_*_PP_NAME              = cl.exe\r
+*_ICC_*_VFRPP_NAME           = cl.exe\r
+*_ICC_*_APP_NAME             = cl.exe\r
+*_ICC_*_ASM_NAME             = ml.exe\r
+\r
+*_ICC_*_VFRPP_FLAGS            = /nologo /P /TC /DVFRCOMPILE\r
+##################\r
+# IA32 definitions\r
+##################\r
+*_ICC_IA32_PCH_NAME          = cl.exe\r
+*_ICC_IA32_ASM_EXT           = .asm\r
+\r
+*_ICC_IA32_*_PATH            = C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin\r
+*_ICC_IA32_*_DPATH           = C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE\r
+*_ICC_IA32_ASMLINK_PATH      = C:\WINDDK\3790.1830\bin\bin16\\r
+\r
+*_ICC_IA32_APP_FLAGS         = /nologo /P /TC\r
+*_ICC_IA32_PP_FLAGS          = /nologo /P /TC /FI${DEST_DIR_DEBUG}/AutoGen.h\r
+DEBUG_ICC_IA32_CC_FLAGS      = /nologo /W4 /WX /Gy /c /D UNICODE /D EFI32 /O1ib2 /GL /DEFI_FIRMWARE_VENDOR=L\"INTEL\" /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /EHs-c- /GF /Gs8192 /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yu${DEST_DIR_DEBUG}/AutoGen.h /Zi /Gm\r
+RELEASE_ICC_IA32_CC_FLAGS    = /nologo /W4 /WX /Gy /c /D UNICODE /D EFI32 /O1ib2 /GL /DEFI_FIRMWARE_VENDOR=L\"INTEL\" /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /EHs-c- /GF /Gs8192 /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yu${DEST_DIR_DEBUG}/AutoGen.h\r
+DEBUG_ICC_IA32_PCH_FLAGS     = /nologo /W4 /WX /Gy /c /D UNICODE /D EFI32 /O1ib2 /GL /DEFI_FIRMWARE_VENDOR=L\"INTEL\" /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /EHs-c- /GF /Gs8192 /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yc /TC /Zi /Gm\r
+RELEASE_ICC_IA32_PCH_FLAGS   = /nologo /W4 /WX /Gy /c /D UNICODE /D EFI32 /O1ib2 /GL /DEFI_FIRMWARE_VENDOR=L\"INTEL\" /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /EHs-c- /GF /Gs8192 /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yc /TC\r
+DEBUG_ICC_IA32_ASM_FLAGS     = /nologo /W3 /WX /c /coff /Cx /Zd /W0 /Zi\r
+RELEASE_ICC_IA32_ASM_FLAGS   = /nologo /W3 /WX /c /coff /Cx /Zd /W0\r
+*_ICC_IA32_SLINK_FLAGS       = /nologo /LTCG\r
+DEBUG_ICC_IA32_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /MACHINE:I386 /LTCG /DLL /ENTRY:${ENTRYPOINT} /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /DEBUG\r
+RELEASE_ICC_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /MACHINE:I386 /LTCG /DLL /ENTRY:${ENTRYPOINT} /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text\r
+\r
+\r
+##################\r
+# IPF definitions\r
+##################\r
+*_ICC_IPF_*_FAMILY  = INTEL\r
+\r
+*_ICC_IPF_CC_NAME           = icl.exe\r
+*_ICC_IPF_SLINK_NAME        = xilib.exe\r
+*_ICC_IPF_DLINK_NAME        = xilink.exe\r
+*_ICC_IPF_ASMLINK_NAME      = xilink.exe\r
+*_ICC_IPF_PP_NAME           = icl.exe\r
+*_ICC_IPF_VFRPP_NAME        = icl.exe\r
+\r
+#*_ICC_IPF_PCH_NAME          = icl.exe\r
+*_ICC_IPF_APP_NAME          = icl.exe\r
+*_ICC_IPF_ASM_NAME          = ias.exe\r
+*_ICC_IPF_ASM_EXT           = .s\r
+\r
+\r
+\r
+*_ICC_IPF_*_PATH            = C:\Program Files\Intel\Compiler\C++\9.1\Itanium\Bin\r
+\r
+*_ICC_IPF_APP_FLAGS         = /nologo /P /TC\r
+*_ICC_IPF_PP_FLAGS          = /nologo /P /TC /FI${DEST_DIR_DEBUG}/AutoGen.h\r
+DEBUG_ICC_IPF_CC_FLAGS      = /nologo /W4 /WX /GX /Gy /c /Os /D EFI64 /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h\r
+RELEASE_ICC_IPF_CC_FLAGS    = /nologo /W4 /WX /GX /Gy /c /Os /D EFI64 /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h\r
+#DEBUG_ICC_IPF_PCH_FLAGS     = /nologo /W4 /WX /GX /Gy /c /Os /D EFI64 /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /Yc /TC /Zi\r
+#RELEASE_ICC_IPF_PCH_FLAGS   = /nologo /W4 /WX /GX /Gy /c /Os /D EFI64 /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /Yc /TC\r
+DEBUG_ICC_IPF_ASM_FLAGS     = -N us -X explicit -M ilp64 -N so -W3 -d debug -F COFF32\r
+RELEASE_ICC_IPF_ASM_FLAGS   = -N us -X explicit -M ilp64 -N so -W3 -F COFF32\r
+DEBUG_ICC_IPF_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF,ICF /IGNORE:4086 /MAP /ALIGN:64 /MACHINE:IA64 /ENTRY:${ENTRYPOINT} /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MAP:${DEST_DIR_DEBUG}/${BASE_NAME}.map /PDB:${DEST_DIR_DEBUG}/${BASE_NAME}.pdb /DEBUG\r
+RELEASE_ICC_IPF_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF,ICF /IGNORE:4086 /MAP /ALIGN:64 /MACHINE:IA64 /ENTRY:${ENTRYPOINT} /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MAP:${DEST_DIR_DEBUG}/${BASE_NAME}.map /PDB:${DEST_DIR_DEBUG}/${BASE_NAME}.pdb\r
+*_ICC_IPF_SLINK_FLAGS       = /nologo /LTCG\r
+\r
+\r
+##################\r
+# ASL definitions\r
+##################\r
+*_ICC_*_ASL_FAMILY  = INTEL\r
+*_ICC_*_ASL_NAME    = iasl.exe\r
+*_ICC_*_ASL_PATH    = C:\ASL\r
+\r
+####################################################################################\r
+#\r
+# MYTOOLS\r
+#   IA32 - Microsoft Visual Studio .NET 2003 and Microsoft Windows DDK 3790.1830 for 16-bit linker\r
+#   X64  - Microsoft Windows DDK 3790.1830\r
+#   IPF  - Microsoft Windows DDK 3790.1830\r
+#   EBC  - Intel EFI Byte Code Compiler\r
+#   ASL  - Intel ACPI Source Language COmpiler\r
+#\r
+####################################################################################\r
+*_MYTOOLS_*_*_FAMILY             = MSFT\r
+\r
+*_MYTOOLS_*_CC_NAME              = cl.exe  \r
+*_MYTOOLS_*_SLINK_NAME           = lib.exe\r
+*_MYTOOLS_*_DLINK_NAME           = link.exe\r
+*_MYTOOLS_*_ASMLINK_NAME         = link.exe\r
+*_MYTOOLS_*_PP_NAME              = cl.exe \r
+*_MYTOOLS_*_VFRPP_NAME           = cl.exe \r
+*_MYTOOLS_*_APP_NAME             = cl.exe\r
+*_MYTOOLS_*_ASM_NAME             = ml.exe\r
+\r
+*_MYTOOLS_*_VFRPP_FLAGS          = /nologo /P /TC /DVFRCOMPILE\r
+##################\r
+# IA32 definitions\r
+##################\r
+*_MYTOOLS_IA32_PCH_NAME          = cl.exe \r
+*_MYTOOLS_IA32_ASM_EXT           = .asm\r
+\r
+*_MYTOOLS_IA32_*_PATH            = C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin\r
+*_MYTOOLS_IA32_*_DPATH           = C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE\r
+*_MYTOOLS_IA32_ASMLINK_PATH      = C:\WINDDK\3790.1830\bin\bin16\\r
+\r
+*_MYTOOLS_IA32_APP_FLAGS         = /nologo /P /TC\r
+*_MYTOOLS_IA32_PP_FLAGS          = /nologo /P /TC /FI${DEST_DIR_DEBUG}/AutoGen.h \r
+DEBUG_MYTOOLS_IA32_CC_FLAGS      = /nologo /W4 /WX /Gy /c /D UNICODE /D EFI32 /O1ib2 /GL /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /EHs-c- /GF /Gs8192 /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yu${DEST_DIR_DEBUG}/AutoGen.h /Zi /Gm\r
+RELEASE_MYTOOLS_IA32_CC_FLAGS    = /nologo /W4 /WX /Gy /c /D UNICODE /D EFI32 /O1ib2 /GL /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /EHs-c- /GF /Gs8192 /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yu${DEST_DIR_DEBUG}/AutoGen.h\r
+DEBUG_MYTOOLS_IA32_PCH_FLAGS     = /nologo /W4 /WX /Gy /c /D UNICODE /D EFI32 /O1ib2 /GL /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /EHs-c- /GF /Gs8192 /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yc /TC /Zi /Gm\r
+RELEASE_MYTOOLS_IA32_PCH_FLAGS   = /nologo /W4 /WX /Gy /c /D UNICODE /D EFI32 /O1ib2 /GL /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /EHs-c- /GF /Gs8192 /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yc /TC\r
+DEBUG_MYTOOLS_IA32_ASM_FLAGS     = /nologo /W3 /WX /c /coff /Cx /Zd /W0 /Zi  \r
+RELEASE_MYTOOLS_IA32_ASM_FLAGS   = /nologo /W3 /WX /c /coff /Cx /Zd /W0\r
+*_MYTOOLS_IA32_ASMLINK_FLAGS     = /link /nologo /tiny\r
+*_MYTOOLS_IA32_SLINK_FLAGS       = /nologo /LTCG\r
+DEBUG_MYTOOLS_IA32_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /MACHINE:I386 /LTCG /DLL /ENTRY:${ENTRYPOINT} /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /DEBUG   \r
+RELEASE_MYTOOLS_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /MACHINE:I386 /LTCG /DLL /ENTRY:${ENTRYPOINT} /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text\r
+\r
+##################\r
+# x64 definitions\r
+##################\r
+*_MYTOOLS_X64_PCH_NAME          = cl.exe\r
+*_MYTOOLS_X64_ASM_NAME          = ml64.exe\r
+*_MYTOOLS_X64_ASM_EXT           = .asm\r
+\r
+*_MYTOOLS_X64_*_PATH            = C:\WINDDK\3790.1830\bin\win64\x86\amd64\r
+*_MYTOOLS_X64_ASMLINK_PATH      = C:\WINDDK\3790.1830\bin\bin16\\r
+\r
+*_MYTOOLS_X64_SLINK_FLAGS       = /nologo /LTCG\r
+*_MYTOOLS_X64_APP_FLAGS         = /nologo /P /TC\r
+*_MYTOOLS_X64_PP_FLAGS          = /nologo /P /TC /FI${DEST_DIR_DEBUG}/AutoGen.h \r
+DEBUG_MYTOOLS_X64_CC_FLAGS      = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /D EFIX64 /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yu${DEST_DIR_DEBUG}/AutoGen.h /Zi /Gm /EHs-c- /GF\r
+RELEASE_MYTOOLS_X64_CC_FLAGS    = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /D EFIX64 /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yu${DEST_DIR_DEBUG}/AutoGen.h /EHs-c- /GF\r
+DEBUG_MYTOOLS_X64_PCH_FLAGS     = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /D EFIX64 /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yc /TC /Zi /Gm /EHs-c- /GF\r
+RELEASE_MYTOOLS_X64_PCH_FLAGS   = /nologo /X /W4 /WX /c /Gs8192 /GS- /D UNICODE /O1ib2s /GL /Gy /D EFIX64 /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yc /TC /EHs-c- /GF\r
+DEBUG_MYTOOLS_X64_ASM_FLAGS     = /nologo /W3 /WX /c /Cx /Zd /Zi\r
+RELEASE_MYTOOLS_X64_ASM_FLAGS   = /nologo /W3 /WX /c /Cx /Zd\r
+DEBUG_MYTOOLS_X64_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /Machine:AMD64 /LTCG /DLL /ENTRY:${ENTRYPOINT} /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /DEBUG \r
+RELEASE_MYTOOLS_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /Machine:AMD64 /LTCG /DLL /ENTRY:${ENTRYPOINT} /SUBSYSTEM:CONSOLE /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text\r
+\r
+##################\r
+# IPF definitions\r
+##################\r
+*_MYTOOLS_IPF_PCH_NAME          = cl.exe\r
+*_MYTOOLS_IPF_ASM_NAME          = ias.exe\r
+*_MYTOOLS_IPF_ASM_EXT           = .s\r
+\r
+*_MYTOOLS_IPF_*_PATH            = C:\WINDDK\3790.1830\bin\win64\x86\r
+\r
+*_MYTOOLS_IPF_APP_FLAGS         = /nologo /P /TC\r
+*_MYTOOLS_IPF_PP_FLAGS          = /nologo /P /TC /FI${DEST_DIR_DEBUG}/AutoGen.h\r
+DEBUG_MYTOOLS_IPF_CC_FLAGS      = /GS- /nologo /W4 /WX /EHs-c- /Gy /c /Os /GL /X /D EFI64 /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yu${DEST_DIR_DEBUG}/AutoGen.h /Zi\r
+RELEASE_MYTOOLS_IPF_CC_FLAGS    = /GS- /nologo /W4 /WX /EHs-c- /Gy /c /Os /GL /X /D EFI64 /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yu${DEST_DIR_DEBUG}/AutoGen.h\r
+DEBUG_MYTOOLS_IPF_PCH_FLAGS     = /GS- /nologo /W4 /WX /EHs-c- /Gy /c /Os /GL /X /D EFI64 /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yc /TC /Zi\r
+RELEASE_MYTOOLS_IPF_PCH_FLAGS   = /GS- /nologo /W4 /WX /EHs-c- /Gy /c /Os /GL /X /D EFI64 /DSTRING_ARRAY_NAME=${BASE_NAME}Strings /FI${DEST_DIR_DEBUG}/AutoGen.h /Fp${DEST_DIR_OUTPUT}/AutoGen.h.gch /Yc /TC\r
+DEBUG_MYTOOLS_IPF_ASM_FLAGS     = -N us -X explicit -M ilp64 -N so -W4 -d debug\r
+RELEASE_MYTOOLS_IPF_ASM_FLAGS   = -N us -X explicit -M ilp64 -N so -W4\r
+DEBUG_MYTOOLS_IPF_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF,ICF /IGNORE:4086 /MAP /ALIGN:32 /MACHINE:IA64 /ENTRY:${ENTRYPOINT} /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MAP:${DEST_DIR_DEBUG}/${BASE_NAME}.map /PDB:${DEST_DIR_DEBUG}/${BASE_NAME}.pdb /DEBUG\r
+RELEASE_MYTOOLS_IPF_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF,ICF /IGNORE:4086 /MAP /ALIGN:32 /MACHINE:IA64 /ENTRY:${ENTRYPOINT} /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MAP:${DEST_DIR_DEBUG}/${BASE_NAME}.map /PDB:${DEST_DIR_DEBUG}/${BASE_NAME}.pdb\r
+*_MYTOOLS_IPF_SLINK_FLAGS       = /nologo /LTCG\r
+\r
+##################\r
+# EBC definitions\r
+##################\r
+*_MYTOOLS_EBC_*_FAMILY      = INTEL\r
+*_MYTOOLS_EBC_PP_NAME       = iec.exe\r
+*_MYTOOLS_EBC_CC_NAME       = iec.exe\r
+*_MYTOOLS_EBC_DLINK_NAME    = link.exe\r
+*_MYTOOLS_EBC_SLINK_NAME    = link.exe\r
+\r
+*_MYTOOLS_EBC_*_PATH        = C:\Program Files\Intel\EBC\Bin\r
+*_MYTOOLS_EBC_*_SPATH       = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib"\r
+\r
+*_MYTOOLS_EBC_PP_FLAGS      = /nologo /P /TC /FI${DEST_DIR_DEBUG}/AutoGen.h \r
+*_MYTOOLS_EBC_CC_FLAGS      = /nologo /c /W3 /WX /FI${DEST_DIR_DEBUG}/AutoGen.h /DSTRING_ARRAY_NAME=${BASE_NAME}Strings \r
+*_MYTOOLS_EBC_SLINK_FLAGS   = /lib /NOLOGO /MACHINE:EBC\r
+*_MYTOOLS_EBC_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:${ENTRYPOINT} /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER\r
+\r
+##################\r
+# ASL definitions\r
+##################\r
+*_MYTOOLS_*_ASL_FAMILY  = INTEL\r
+*_MYTOOLS_*_ASL_NAME    = iasl.exe\r
+*_MYTOOLS_*_ASL_PATH    = C:\ASL\r