summaryrefslogtreecommitdiff
path: root/Tools
diff options
context:
space:
mode:
authorlhauch <lhauch@6f19259b-4bc3-4df7-8a09-765794883524>2006-06-06 03:09:40 +0000
committerlhauch <lhauch@6f19259b-4bc3-4df7-8a09-765794883524>2006-06-06 03:09:40 +0000
commite4ecc06e5018cc2712c5748494d216b2e5517f97 (patch)
tree30792198e9fb9ee6f66163a3acde5d83b048bb10 /Tools
parent6c756d64634904e9e4dc7b9a6e9302fe0394a534 (diff)
downloadedk2-platforms-e4ecc06e5018cc2712c5748494d216b2e5517f97.tar.xz
Updated schema, added some new elements that will be used in the final. Added a DatumSizeLimitation type so that it could be referred to rather than specify 8 additional lines of XML for DataumSize element.
MAJOR CHANGE TO Framework Doc - SPD Has been added. I will add Andrew's comments tomorrow. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@424 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'Tools')
-rw-r--r--Tools/FrameworkWizardMinReq.docbin1611776 -> 1628160 bytes
-rw-r--r--Tools/XMLSchema/FrameworkDataElements.xsd233
-rw-r--r--Tools/XMLSchema/FrameworkDataTypes.xsd9
-rw-r--r--Tools/XMLSchema/FrameworkPlatformDataElements.xsd46
-rw-r--r--Tools/XMLSchema/SurfaceArea.xsd15
5 files changed, 202 insertions, 101 deletions
diff --git a/Tools/FrameworkWizardMinReq.doc b/Tools/FrameworkWizardMinReq.doc
index 8ce27ebbe1..823cd9347e 100644
--- a/Tools/FrameworkWizardMinReq.doc
+++ b/Tools/FrameworkWizardMinReq.doc
Binary files differ
diff --git a/Tools/XMLSchema/FrameworkDataElements.xsd b/Tools/XMLSchema/FrameworkDataElements.xsd
index 8136662969..344111ac31 100644
--- a/Tools/XMLSchema/FrameworkDataElements.xsd
+++ b/Tools/XMLSchema/FrameworkDataElements.xsd
@@ -853,24 +853,6 @@
</xs:sequence>
</xs:complexType>
</xs:element>
- <xs:element name="MsaFileList">
- <xs:annotation>
- <xs:documentation xml:lang="en">Surface Area Package Description (SPD) list of Module Surface Area files</xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="0" maxOccurs="unbounded" name="Filename">
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:anyURI">
- <xs:attributeGroup ref="ModuleNameSaAttributes"/>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
<xs:element name="MsaPcdDeclarations">
<xs:annotation>
<xs:documentation xml:lang="en">Child of Module Surface Area Description (MSA)</xs:documentation>
@@ -895,6 +877,24 @@
</xs:sequence>
</xs:complexType>
</xs:element>
+ <xs:element name="MsaFileList">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Surface Area Package Description (SPD) list of Module Surface Area files</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Filename">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:anyURI">
+ <xs:attributeGroup ref="ModuleNameSaAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
<xs:element name="OutputDirectory">
<xs:annotation>
<xs:documentation xml:lang="en">Define where we want our output to go. The Attribute, IntermediateDirectories, default MODULE, says that intermediate files will be local to the module, versus a unified directory structure.</xs:documentation>
@@ -941,17 +941,7 @@
<xs:element default="false" minOccurs="0" maxOccurs="1" name="SkuDataArrayEnable" type="xs:boolean"/>
<xs:element default="0x00" minOccurs="0" maxOccurs="1" name="MaxSku" type="HexByteDataType"/>
<xs:element default="0x00" minOccurs="0" maxOccurs="1" name="SkuId" type="HexByteDataType"/>
- <xs:element minOccurs="0" maxOccurs="1" name="DatumSize">
- <xs:annotation>
- <xs:documentation xml:lang="en">Max Number of Bytes of the data.</xs:documentation>
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="xs:int">
- <xs:minInclusive value="1"/>
- <xs:maxInclusive value="16777215"/>
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="DatumSize" type="DatumSizeLimitation"/>
<xs:element minOccurs="0" maxOccurs="1" name="VariableName" type="xs:normalizedString"/>
<xs:element minOccurs="0" maxOccurs="1" name="VariableGuid" type="VariableGuidType"/>
<xs:element minOccurs="0" maxOccurs="1" name="DataOffset" type="Hex64BitDataType"/>
@@ -1212,26 +1202,10 @@
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="TokenSpaceGuid" type="GuidType"/>
- <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes">
- <xs:annotation>
- <xs:documentation xml:lang="en">This specifies the size of the Pcd Datum. It is either 8, 16, 32 or 64 bits for values, 1 bit for BOOLEAN and variable length for elements defined as VOID*</xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element default="false" minOccurs="1" maxOccurs="1" name="HiiEnable" type="xs:boolean">
- <xs:annotation>
- <xs:documentation xml:lang="en">This Bit means that the Variable data is associated with HII</xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element default="false" minOccurs="1" maxOccurs="1" name="VpdEnable" type="xs:boolean">
- <xs:annotation>
- <xs:documentation xml:lang="en">This bit enables the Vital Product Data area within flash for maintaining PCD information</xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element default="false" minOccurs="1" maxOccurs="1" name="AlternateNameSpaceEnable" type="xs:boolean">
- <xs:annotation>
- <xs:documentation>This is only applicable to ItemType DYNAMIC_EX</xs:documentation>
- </xs:annotation>
- </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes"/>
+ <xs:element default="false" minOccurs="1" maxOccurs="1" name="HiiEnable" type="xs:boolean"/>
+ <xs:element default="false" minOccurs="1" maxOccurs="1" name="VpdEnable" type="xs:boolean"/>
+ <xs:element default="false" minOccurs="1" maxOccurs="1" name="AlternateNameSpaceEnable" type="xs:boolean"/>
<xs:element default="false" minOccurs="1" maxOccurs="1" name="SkuEnable" type="xs:boolean"/>
<xs:element default="false" minOccurs="1" maxOccurs="1" name="SkuDataArrayEnable" type="xs:boolean"/>
<xs:choice minOccurs="0">
@@ -1260,43 +1234,13 @@
<xs:documentation xml:lang="en">This value comes from a production line database, and has nothing to do with the number of SkuData IDs that have been defined.</xs:documentation>
</xs:annotation>
</xs:element>
- <xs:element default="0x00" minOccurs="1" maxOccurs="1" name="SkuId" type="HexByteDataType">
- <xs:annotation>
- <xs:documentation xml:lang="en">This is the specific Sku ID for this build.</xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1" name="DatumSize">
- <xs:annotation>
- <xs:documentation xml:lang="en">Max Number of Bytes of the data.</xs:documentation>
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="xs:int">
- <xs:minInclusive value="1"/>
- <xs:maxInclusive value="16777215"/>
- </xs:restriction>
- </xs:simpleType>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1" name="VariableGuid" type="VariableGuidType">
- <xs:annotation>
- <xs:documentation xml:lang="en">This is the Variable's GUID if and only if HII is enabled.</xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="1" maxOccurs="1" name="VariableName" type="xs:normalizedString">
- <xs:annotation>
- <xs:documentation xml:lang="en">This is the C Name for the Variable, and is valid if and only HII is enabled.</xs:documentation>
- </xs:annotation>
- </xs:element>
+ <xs:element default="0x00" minOccurs="1" maxOccurs="1" name="SkuId" type="HexByteDataType"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="DatumSize" type="DatumSizeLimitation"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="VariableGuid" type="VariableGuidType"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="VariableName" type="xs:normalizedString"/>
<xs:element minOccurs="0" maxOccurs="1" name="VariableValueDefault" type="xs:normalizedString"/>
- <xs:element minOccurs="1" maxOccurs="1" name="DataOffset" type="Hex64BitDataType">
- <xs:annotation>
- <xs:documentation xml:lang="en">If HII is enabled, This is the offset into the variable data entry, If Vpd is enabled, then it's the Offset into the VPD area of the image defined by platform manufacturer, if neither HII nor Vpd are enabled, it's the offset into the PCD Data Area. HII and VPD can never be enabled at the same time (as of the date of this document.)</xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element minOccurs="0" maxOccurs="1" name="GuidOffset" type="Hex64BitDataType">
- <xs:annotation>
- <xs:documentation xml:lang="en">FIELD IS NOT USED! REMOVE in FINAL!</xs:documentation>
- </xs:annotation>
- </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="DataOffset" type="Hex64BitDataType"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="GuidOffset" type="Hex64BitDataType"/>
<xs:element minOccurs="1" maxOccurs="1" name="DefaultValue" type="xs:normalizedString"/>
</xs:sequence>
<xs:attributeGroup ref="PcdAttributes"/>
@@ -1316,6 +1260,115 @@
</xs:sequence>
</xs:complexType>
</xs:element>
+ <xs:element name="DynamicPcdBuildDefinitions">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Child of Framework Platform Description (FPD)</xs:documentation>
+ <xs:documentation xml:lang="en">FPD uses this PCD information for Dynamic PCDs Only</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="PcdBuildData">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="Token" type="HexDoubleWordDataType"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="TokenSpaceGuid" type="GuidType"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes"/>
+ <xs:group minOccurs="0" maxOccurs="1" ref="SkuGroup"/>
+ <xs:choice minOccurs="0" maxOccurs="1">
+ <xs:group minOccurs="0" maxOccurs="1" ref="HiiGroup"/>
+ <xs:group minOccurs="0" maxOccurs="1" ref="VpdGroup"/>
+ </xs:choice>
+ <xs:element minOccurs="1" maxOccurs="1" name="DatumSize" type="DatumSizeLimitation"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="Value" type="xs:normalizedString"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="PcdAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="PcdBuildDefinition">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Child of FPD ModuleSA element for FIXED_AT_BUILD, PATCHABLE_IN_MODULE, and FEATURE_FLAG PCDS Only!</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs="1">
+ <xs:element maxOccurs="unbounded" name="PcdData">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="Token" type="HexDoubleWordDataType"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="TokenSpaceGuid" type="GuidType"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes"/>
+ <xs:group minOccurs="0" maxOccurs="1" ref="SkuGroup"/>
+ <xs:choice minOccurs="0" maxOccurs="1">
+ <xs:group minOccurs="0" maxOccurs="1" ref="HiiGroup"/>
+ <xs:group minOccurs="0" maxOccurs="1" ref="VpdGroup"/>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="1" name="DatumSize" type="DatumSizeLimitation"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="Value" type="xs:normalizedString"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="PcdAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:group name="HiiGroup">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">If HiiGroup is specified, then HiiEnable is default true</xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="1" name="VariableName" type="xs:normalizedString"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="VariableGuid" type="VariableGuidType"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="VariableOffset" type="Hex64BitDataType"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="VpdGroup">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="1" name="VpdOffset" type="Hex64BitDataType"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="SkuGroup">
+ <xs:sequence>
+ <xs:element default="0x00" minOccurs="0" maxOccurs="1" name="SkuSet" type="SkuListType"/>
+ <xs:element default="0x00" minOccurs="0" maxOccurs="1" name="SkuList" type="SkuListType"/>
+ <xs:element default="false" minOccurs="0" maxOccurs="1" name="SkuDataArrayEnable" type="xs:boolean"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="SkuData">
+ <xs:complexType>
+ <xs:sequence minOccurs="1">
+ <xs:element name="Id" type="xs:int"/>
+ <xs:element name="Value" type="xs:normalizedString"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="PcdCoded">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Child of Module Surface Area Description (MSA)</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs="1">
+ <xs:element maxOccurs="unbounded" name="PcdEntry">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is the valid content of the PCD table of a Module. The contents may not be wired at build time, and these only refer to Platform Build values, not modules.</xs:documentation>
+ <xs:documentation xml:lang="en">This element is valid for PcdInfo.xml and FPD files.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue" type="DefaultValue"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>
+ </xs:sequence>
+ <!-- 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. -->
+ <xs:attribute name="PcdItemType" type="PcdItemTypes" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
<xs:element name="PcdDeclarations">
<xs:annotation>
<xs:documentation xml:lang="en">Child of Package Surface Area Description (SPD)</xs:documentation>
@@ -1673,6 +1726,16 @@
</xs:sequence>
</xs:complexType>
</xs:element>
+ <xs:element name="UserExtensions">
+ <xs:complexType>
+ <xs:complexContent mixed="true">
+ <xs:extension base="xs:anyType">
+ <xs:attribute name="UserID" type="xs:NCName" use="required"/>
+ <xs:attribute name="Identifier" type="xs:integer" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
<xs:element name="Variables">
<xs:annotation>
<xs:documentation xml:lang="en">A list of EFI Variables described by GUID string pair.</xs:documentation>
diff --git a/Tools/XMLSchema/FrameworkDataTypes.xsd b/Tools/XMLSchema/FrameworkDataTypes.xsd
index 8199df0f6a..10bde1f703 100644
--- a/Tools/XMLSchema/FrameworkDataTypes.xsd
+++ b/Tools/XMLSchema/FrameworkDataTypes.xsd
@@ -190,6 +190,12 @@
<xs:pattern value="[1-9][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9] [0-2][0-9]:[0-5][0-9]"/>
</xs:restriction>
</xs:simpleType>
+ <xs:simpleType name="DatumSizeLimitation">
+ <xs:restriction base="xs:int">
+ <xs:minInclusive value="1"/>
+ <xs:maxInclusive value="16777215"/>
+ </xs:restriction>
+ </xs:simpleType>
<xs:simpleType name="DefaultValue">
<xs:annotation>
<xs:documentation xml:lang="en"> The DefaultValue is a union of a string and an integer. </xs:documentation>
@@ -863,6 +869,9 @@
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
+ <xs:simpleType name="SkuListType">
+ <xs:list itemType="HexByteDataType"/>
+ </xs:simpleType>
<xs:simpleType name="SupportedArchitectures">
<xs:annotation>
<xs:documentation xml:lang="en"> These are the currently Supportted Architectures type codes </xs:documentation>
diff --git a/Tools/XMLSchema/FrameworkPlatformDataElements.xsd b/Tools/XMLSchema/FrameworkPlatformDataElements.xsd
index 188ea9015c..08a8ecffdd 100644
--- a/Tools/XMLSchema/FrameworkPlatformDataElements.xsd
+++ b/Tools/XMLSchema/FrameworkPlatformDataElements.xsd
@@ -232,21 +232,41 @@
</xs:annotation>
<xs:complexType>
<xs:sequence minOccurs="1">
- <xs:element minOccurs="0" maxOccurs="1" ref="SourceFiles"/> <!-- DO NOT USE! REMOVE in FINAL -->
- <xs:element minOccurs="0" maxOccurs="1" ref="Includes"/> <!-- DO NOT USE! REMOVE in FINAL -->
+ <!-- DO NOT USE! REMOVE SourceFiles in FINAL -->
+ <xs:element minOccurs="0" maxOccurs="1" ref="SourceFiles"/>
+ <!-- DO NOT USE! REMOVE Includes in FINAL -->
+ <xs:element minOccurs="0" maxOccurs="1" ref="Includes"/>
+ <!-- Libraries stays in FINAL -->
<xs:element minOccurs="0" maxOccurs="1" ref="Libraries"/>
- <xs:element minOccurs="0" maxOccurs="1" ref="Protocols"/> <!-- DO NOT USE! REMOVE in FINAL -->
- <xs:element minOccurs="0" maxOccurs="1" ref="Events"/> <!-- DO NOT USE! REMOVE in FINAL -->
- <xs:element minOccurs="0" maxOccurs="1" ref="Hobs"/> <!-- DO NOT USE! REMOVE in FINAL -->
- <xs:element minOccurs="0" maxOccurs="1" ref="PPIs"/> <!-- DO NOT USE! REMOVE in FINAL -->
- <xs:element minOccurs="0" maxOccurs="1" ref="Variables"/> <!-- DO NOT USE! REMOVE in FINAL -->
- <xs:element minOccurs="0" maxOccurs="1" ref="BootModes"/> <!-- DO NOT USE! REMOVE in FINAL -->
- <xs:element minOccurs="0" maxOccurs="1" ref="SystemTables"/> <!-- DO NOT USE! REMOVE in FINAL -->
- <xs:element minOccurs="0" maxOccurs="1" ref="DataHubs"/> <!-- DO NOT USE! REMOVE in FINAL -->
- <xs:element minOccurs="0" maxOccurs="1" ref="Formsets"/> <!-- DO NOT USE! REMOVE in FINAL -->
- <xs:element minOccurs="0" maxOccurs="1" ref="Guids"/> <!-- DO NOT USE! REMOVE in FINAL -->
+ <!-- DO NOT USE! REMOVE Protocols in FINAL -->
+ <xs:element minOccurs="0" maxOccurs="1" ref="Protocols"/>
+ <!-- DO NOT USE! REMOVE Events in FINAL -->
+ <xs:element minOccurs="0" maxOccurs="1" ref="Events"/>
+ <!-- DO NOT USE! REMOVE Hobs in FINAL -->
+ <xs:element minOccurs="0" maxOccurs="1" ref="Hobs"/>
+ <!-- DO NOT USE! REMOVE PPIs in FINAL -->
+ <xs:element minOccurs="0" maxOccurs="1" ref="PPIs"/>
+ <!-- DO NOT USE! REMOVE Variables in FINAL -->
+ <xs:element minOccurs="0" maxOccurs="1" ref="Variables"/>
+ <!-- DO NOT USE! REMOVE BootModes in FINAL -->
+ <xs:element minOccurs="0" maxOccurs="1" ref="BootModes"/>
+ <!-- DO NOT USE! REMOVE SystemTables in FINAL -->
+ <xs:element minOccurs="0" maxOccurs="1" ref="SystemTables"/>
+ <!-- DO NOT USE! REMOVE DataHubs in FINAL -->
+ <xs:element minOccurs="0" maxOccurs="1" ref="DataHubs"/>
+ <!-- DO NOT USE! REMOVE Formsets in FINAL -->
+ <xs:element minOccurs="0" maxOccurs="1" ref="Formsets"/>
+ <!-- DO NOT USE! REMOVE Guids in FINAL -->
+ <xs:element minOccurs="0" maxOccurs="1" ref="Guids"/>
+ <!-- EXTERNS stays in FINAL -->
<xs:element minOccurs="0" maxOccurs="1" ref="Externs"/>
- <xs:element minOccurs="0" maxOccurs="1" ref="PcdBuildDeclarations"/>
+ <xs:choice>
+ <!-- DO NOT USE! REMOVE PcdBuildDeclarations in FINAL -->
+ <xs:element minOccurs="0" maxOccurs="1" ref="PcdBuildDeclarations"/>
+ <!-- PcdBuildDefinition stays in FINAL -->
+ <xs:element minOccurs="0" maxOccurs="1" ref="PcdBuildDefinition"/>
+ </xs:choice>
+ <!-- BuildOptions stays in FINAL -->
<xs:element minOccurs="0" maxOccurs="1" ref="BuildOptions"/>
</xs:sequence>
<xs:attributeGroup ref="MsaAttributes"/>
diff --git a/Tools/XMLSchema/SurfaceArea.xsd b/Tools/XMLSchema/SurfaceArea.xsd
index a0223cb96f..e5e0276c38 100644
--- a/Tools/XMLSchema/SurfaceArea.xsd
+++ b/Tools/XMLSchema/SurfaceArea.xsd
@@ -44,8 +44,12 @@
<xs:element minOccurs="0" maxOccurs="1" ref="FrameworkModules"/>
<!-- DO NOT USE! removing PcdBuildDeclarations here, use PcdBuildDeclaratiion in ModuleSA instead. -->
<xs:element minOccurs="0" maxOccurs="1" ref="PcdBuildDeclarations"/>
- <xs:element minOccurs="0" maxOccurs="1" ref="PcdDynamicBuildDeclarations"/>
+ <xs:choice minOccurs="0">
+ <xs:element minOccurs="0" maxOccurs="1" ref="PcdDynamicBuildDeclarations"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="DynamicPcdBuildDefinitions"/>
+ </xs:choice>
<xs:element minOccurs="0" maxOccurs="1" ref="BuildOptions"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="UserExtensions"/>
</xs:sequence>
</xs:complexType>
</xs:element>
@@ -136,7 +140,10 @@
<xs:element minOccurs="1" maxOccurs="1" ref="MsaHeader"/>
<xs:element minOccurs="0" maxOccurs="1" ref="LibraryClassDefinitions"/>
<xs:element minOccurs="1" maxOccurs="1" ref="SourceFiles"/>
- <xs:element minOccurs="0" maxOccurs="1" ref="Includes"/>
+ <xs:choice minOccurs="0">
+ <xs:element minOccurs="0" maxOccurs="1" ref="Includes"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="PackageDependencies"/>
+ </xs:choice>
<xs:element minOccurs="0" maxOccurs="1" ref="Protocols"/>
<xs:element minOccurs="0" maxOccurs="1" ref="Events"/>
<xs:element minOccurs="0" maxOccurs="1" ref="Hobs"/>
@@ -151,9 +158,10 @@
<xs:choice minOccurs="0">
<!-- DO NOT USE! removing PCDs, use MsaPcdDeclarations instead -->
<xs:element minOccurs="0" maxOccurs="1" ref="PCDs"/>
- <xs:element minOccurs="0" maxOccurs="1" ref="MsaPcdDeclarations"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="PcdCoded"/>
</xs:choice>
<xs:element minOccurs="0" maxOccurs="1" ref="BuildOptions"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="UserExtensions"/>
</xs:sequence>
</xs:complexType>
</xs:element>
@@ -177,6 +185,7 @@
<xs:element minOccurs="0" maxOccurs="1" ref="PcdDefinitions"/>
<xs:element minOccurs="0" maxOccurs="1" ref="PcdDeclarations"/>
</xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="UserExtensions"/>
</xs:sequence>
</xs:complexType>
</xs:element>