<xs:attributeGroup name="FilenameAttributes">\r
<xs:attribute name="Usage" type="FileNameUsage" use="optional"/>\r
<xs:attribute name="Guid" type="GuidType" use="optional"/>\r
+ <xs:attribute name="GuidValue" type="GuidType" use="optional"/>\r
<xs:attribute name="Path" type="DirectoryNamingConvention" use="optional"/>\r
<xs:attribute name="FileType" type="xs:string" use="optional"/>\r
<xs:attribute name="ToolChain" type="ToolChains" use="optional"/>\r
<xs:attribute name="OverrideID" type="xs:int" use="optional"/>\r
</xs:attributeGroup>\r
<xs:attributeGroup name="ModuleNameAttributes">\r
- <xs:attribute name="Guid" type="GuidType" use="optional"/>\r
+ <xs:attribute name="Guid" type="GuidType" use="required"/>\r
+ <xs:attribute name="Version" type="VersionDataType" use="optional"/>\r
+ </xs:attributeGroup>\r
+ <xs:attributeGroup name="ModuleNameSaAttributes">\r
+ <xs:attribute name="ModuleName" type="xs:NCName" use="required"/>\r
+ <xs:attribute name="Guid" type="GuidType" use="required"/>\r
<xs:attribute name="Version" type="VersionDataType" use="optional"/>\r
</xs:attributeGroup>\r
<xs:attributeGroup name="MsaAttributes">\r
<xs:attribute name="Platform" type="PlatformNamingConvention" use="optional"/>\r
<xs:attribute name="OverrideID" type="xs:int" use="optional"/>\r
<xs:attribute name="ToolChain" type="ToolChains" use="optional"/>\r
+ <xs:attribute name="BuildTarget" type="BuildTargets" use="optional"/>\r
</xs:attributeGroup>\r
<xs:attributeGroup name="PackageAttributes">\r
<xs:attribute name="Usage" type="PackageUsage" use="optional"/>\r
<xs:attributeGroup name="PackageNameAttributes">\r
<xs:attribute name="Guid" type="GuidType" use="optional"/>\r
<xs:attribute name="Version" type="VersionDataType" use="optional"/>\r
+ <xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>\r
</xs:attributeGroup>\r
<xs:attributeGroup name="PcdAttributes">\r
<xs:annotation>\r
</xs:element>\r
<xs:element name="LibraryClass">\r
<xs:annotation>\r
- <xs:documentation xml:lang="en">Define in the MSA and/or SPD, what class of library is being produced by a library module - for components, it can also specify what class of library is consumed.</xs:documentation>\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:simpleContent>\r
<xs:extension base="BaseNameConvention">\r
- <xs:attribute name="Usage" type="LibraryUsage" use="optional"/>\r
+ <xs:attribute name="Usage" type="LibraryUsage" use="required"/>\r
+ <xs:attribute name="RecommendedInstance" type="BaseNameConvention" use="optional"/>\r
+ <xs:attribute name="RecommendedInstanceGuid" type="GuidType" use="optional"/>\r
</xs:extension>\r
</xs:simpleContent>\r
</xs:complexType>\r
</xs:annotation>\r
<xs:complexType>\r
<xs:sequence minOccurs="0">\r
- <xs:element minOccurs="1" maxOccurs="1" ref="LibraryClass"/>\r
+ <xs:element minOccurs="1" maxOccurs="1" name="LibraryClass">\r
+ <xs:annotation>\r
+ <xs:documentation xml:lang="en">Used in MSA and SPD 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:simpleContent>\r
+ <xs:extension base="BaseNameConvention">\r
+ <xs:attribute name="RecommendedInstance" type="BaseNameConvention" use="optional"/>\r
+ <xs:attribute name="RecommendedInstanceGuid" type="GuidType" use="optional"/>\r
+ </xs:extension>\r
+ </xs:simpleContent>\r
+ </xs:complexType>\r
+ </xs:element>\r
<xs:element minOccurs="1" maxOccurs="1" ref="IncludeHeader"/>\r
</xs:sequence>\r
</xs:complexType>\r
<xs:sequence minOccurs="1">\r
<xs:element minOccurs="0" maxOccurs="unbounded" name="MsaFile">\r
<xs:annotation>\r
- <xs:documentation xml:lang="en">Describe the valid content of a Surface Area Package Description (SPD) file</xs:documentation>\r
+ <xs:documentation xml:lang="en">Surface Area Package Description (SPD) list of Module Surface Area files</xs:documentation>\r
</xs:annotation>\r
<xs:complexType>\r
<xs:sequence minOccurs="0" maxOccurs="1">\r
</xs:sequence>\r
</xs:complexType>\r
</xs:element>\r
+ <xs:element name="MsaFileList">\r
+ <xs:annotation>\r
+ <xs:documentation xml:lang="en">Surface Area Package Description (SPD) list of Module Surface Area files</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Filename">\r
+ <xs:complexType>\r
+ <xs:simpleContent>\r
+ <xs:extension base="xs:anyURI">\r
+ <xs:attributeGroup ref="ModuleNameSaAttributes"/>\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="OutputDirectory">\r
<xs:annotation>\r
<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>\r
</xs:enumeration>\r
</xs:restriction>\r
</xs:simpleType>\r
+ <xs:simpleType name="BuildTargets">\r
+ <xs:restriction base="xs:NCName">\r
+ <xs:enumeration value="DEBUG"/>\r
+ <xs:enumeration value="RELEASE"/>\r
+ <xs:enumeration value="BOTH"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
<xs:simpleType name="ComponentExecutionPhase">\r
<xs:annotation>\r
<xs:documentation xml:lang="en">These are the supported EFI/Framework Execution Phases</xs:documentation>\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="0" maxOccurs="1" ref="Specification"/>\r
<xs:choice minOccurs="1" maxOccurs="1">\r
<xs:element minOccurs="0" maxOccurs="1" ref="Created"/>\r
<xs:element minOccurs="0" maxOccurs="1" ref="CreatedDate"/>\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="0" maxOccurs="1" ref="Specification"/>\r
<xs:choice minOccurs="1" maxOccurs="1">\r
<xs:element minOccurs="0" maxOccurs="1" ref="Created"/>\r
<xs:element minOccurs="0" maxOccurs="1" ref="CreatedDate"/>\r
</xs:annotation>\r
<xs:complexType>\r
<xs:sequence>\r
- <xs:element minOccurs="1" maxOccurs="1" ref="BaseName"/>\r
+ <xs:choice>\r
+ <xs:element minOccurs="0" maxOccurs="1" ref="BaseName"/>\r
+ <xs:element minOccurs="0" maxOccurs="1" name="ModuleName" type="xs:NCName"/>\r
+ </xs:choice>\r
<xs:element minOccurs="1" maxOccurs="1" ref="ModuleType"/>\r
<xs:element minOccurs="1" maxOccurs="1" ref="ComponentType"/>\r
<xs:choice>\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="0" maxOccurs="1" ref="Specification"/>\r
<xs:choice minOccurs="1" maxOccurs="1">\r
<xs:element minOccurs="0" maxOccurs="1" ref="Created"/>\r
<xs:element minOccurs="0" maxOccurs="1" ref="CreatedDate"/>\r
</xs:choice>\r
<xs:element minOccurs="0" maxOccurs="1" ref="Updated"/>\r
- <xs:element minOccurs="0" maxOccurs="1" ref="Specification"/>\r
</xs:sequence>\r
</xs:complexType>\r
</xs:element>\r
<xs:documentation xml:lang="en">DO NOT USE! removing from XMLSchema</xs:documentation>\r
</xs:annotation>\r
</xs:element>\r
- <xs:element minOccurs="0" maxOccurs="1" name="BuildTarget">\r
- <!-- BuildTarget needs to be required -->\r
- <xs:simpleType>\r
- <xs:restriction base="xs:NCName">\r
- <xs:enumeration value="DEBUG"/>\r
- <xs:enumeration value="RELEASE"/>\r
- <xs:enumeration value="BOTH"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:element>\r
+ <xs:element minOccurs="0" maxOccurs="1" name="BuildTarget" type="BuildTargets"/>\r
<xs:element minOccurs="0" maxOccurs="unbounded" ref="Specification"/>\r
<!-- Specification needs to be required - FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00090000 -->\r
</xs:sequence>\r
</xs:annotation>\r
<xs:restriction base="xs:normalizedString"/>\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="Directory_DOS Directory_UNIX"/>\r
+ </xs:simpleType>\r
<xs:simpleType name="PlatformNamingConvention">\r
<xs:annotation>\r
<xs:documentation xml:lang="en"> This defines what a Platform Name is: Alphanumeric characters and optional underscore (_) or dash (-) characters, followed by a dot and more alphanumeric characters. </xs:documentation>\r