From 878ddf1fc3540a715f63594ed22b6929e881afb4 Mon Sep 17 00:00:00 2001 From: bbahnsen Date: Fri, 21 Apr 2006 22:54:32 +0000 Subject: Initial import. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3 6f19259b-4bc3-4df7-8a09-765794883524 --- Tools/XMLSchema/FDPManifest.xsd | 376 ++++++ Tools/XMLSchema/FrameworkDataElements.xsd | 1479 +++++++++++++++++++++ Tools/XMLSchema/FrameworkDataTypes.xsd | 1196 +++++++++++++++++ Tools/XMLSchema/FrameworkHeaders.xsd | 160 +++ Tools/XMLSchema/FrameworkPlatformDataElements.xsd | 357 +++++ Tools/XMLSchema/NamingConvention.xsd | 307 +++++ Tools/XMLSchema/SurfaceArea.xsd | 167 +++ Tools/XMLSchema/SurfaceArea.xsdconfig | 16 + 8 files changed, 4058 insertions(+) create mode 100644 Tools/XMLSchema/FDPManifest.xsd create mode 100644 Tools/XMLSchema/FrameworkDataElements.xsd create mode 100644 Tools/XMLSchema/FrameworkDataTypes.xsd create mode 100644 Tools/XMLSchema/FrameworkHeaders.xsd create mode 100644 Tools/XMLSchema/FrameworkPlatformDataElements.xsd create mode 100644 Tools/XMLSchema/NamingConvention.xsd create mode 100644 Tools/XMLSchema/SurfaceArea.xsd create mode 100644 Tools/XMLSchema/SurfaceArea.xsdconfig (limited to 'Tools/XMLSchema') diff --git a/Tools/XMLSchema/FDPManifest.xsd b/Tools/XMLSchema/FDPManifest.xsd new file mode 100644 index 0000000000..f6b3715426 --- /dev/null +++ b/Tools/XMLSchema/FDPManifest.xsd @@ -0,0 +1,376 @@ + + + + + This schema defines FDP Manifest + + + + + + At the top level of the Manifest we have four sections: + Header, Private, Public and Contents. + + + + + + + + + + + + + The Header contains some three elements that can + uniquely identify this package (PackageName, Guid, Version) as well as several + fields that identify the licensing and compyright status of the contents of the + package. The rest of the fields are there to idenify who created the package and + when it was made. The buid fields are here to identify when the package was created, + not when the package was compiled. + + + + + + + + + + + + + + + + + + + + + + + + + + + The Build number is an integer that is meant to represent the exact + build of the package. + + + + + In the Type field we can record what kinds of modules are contained + in the package. The possibilities are source, binary and mixed (both source and + binary.) + + + + + + + + + + + + + + + + + + + + + + The build target is used to record what target architecture the + modules within this package were compiled for. + + + + + In the creator field, we can record the name, user id, and email + address of the person who created this package. + + + + + + + + + + + + + In the Modifier field, we can record the name, user id, and email + address of the person who changed/updated or modified this package. + + + + + + + + + + + + + + The name of the company, organization or individual that created or + distributes the package. + + + + + This is the place to record the name and DNS name of the computer on + which the package was created. + + + + + + + + + + + + The package may be Debug or Production. + + + + + + + + + + + We may identify the quality level of the package here. + + + + + + + + + + + + + + + + + + This is the directory, relative to the root of the workspace, where + the package will be installed by default. + + + + + + + + + + + We can track the pakages that this package provides (these are the + packages contained in this pacakge.) We also record which packages are required by + this package. + + + + + + + + + + + This is a list of the packages that this package requires to be + installed in the workspace for package to function and/or build correctly. In the + case of source packages, these are the necessary dependencies for successful + build-time operation of the package. For binary packages these dependencies are + necessary for successful runtime operation. + + + + + + This tag is used in the Framework Package + Database File to track individual package information. The Path is a + relative path to the SPD File. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The list of dependencies that the package fulfills. + + + + + + This tag is used in the Framework Package + Database File to track individual package information. The Path is a + relative path to the SPD File. + + + + + + + + + + + + + + + + A library. It can be provided by or required by this or other packages. + + + + + + + + + + + + + A protocol. It can be provided by or required by this or other packages. + + + + + + + + + + + + + + + + + + + + + + + + + The Private section is a place where the files are listed that should + not be seen by the users of this package. + + + + + + + + + + The Public section is a list of files that are meant to be seen by + the users of the package. + + + + + + + + + + This is a list of all the files within this package. Each file is + identified by its path relative to the workspace root. + + + + + + + + + + Specify a filename including the path + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tools/XMLSchema/FrameworkDataElements.xsd b/Tools/XMLSchema/FrameworkDataElements.xsd new file mode 100644 index 0000000000..bbc75d9729 --- /dev/null +++ b/Tools/XMLSchema/FrameworkDataElements.xsd @@ -0,0 +1,1479 @@ + + + + + This schema defines EFI and Framework Data Elements + + + + + + Abstract is valid for all Description Files + 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. + + + + + + + + + + + + This is a sub-element of AntTask + This is an ant command that will be inserted into a biuld sequence. Since ant commands are valid XML statements, special care must be taken to use the correct tokens for reserved words and escape quote characters. + + + + + + + + + + + + + + + + This is a sub-element of UserDefinedAntTasks + 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. + + + + + + + + + + + + BaseName is valid for all Description Files + We need to be able to permit different attributes for every basename + + + + + + + + + + + + BootModes is valid for all Description Files + This is a list of BootModes Supported by the Module + + + + + + + + + + + + + + BuildOptions is valid for MBD and FPD files. + Specific Build Options, by Tool Chain, than should be applied, overriding any global options + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + C_Name is valid for all Description Files + + + + + ComponentName is valid for all Description Files + + + + + Describe the valid Framework Component Type + + + + + A conditional expression that must be evaluated to determine whether a feature is implemented or not. The expression must be either numeric, string or boolean. + + + + + + + + + + + A conditional expression that must be evaluated to determine whether a feature is implemented or not. The expression must be either numeric, string or boolean. + + + + + + + + + + + + + + + This is a list of DataHubRecord elements. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The Name of the Database, "FrameworkDatabase" + + + + + + + + + + + + The default setting of a PCD entry. + + + + + + + + + + This section is required for new modules and libraries and must contain more information than the Abstract. + + + + + + + + + + This is a list of Events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Module has an event that is waiting to be signaled. Event is named by GUID. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This is a child of MSA files, both Library and Module. + This is a list of Extern statements, right now, only Driver Binding information is provided. + + + + + + + + + Driver Module + + + + + + + Library Module + + + + + + + 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. + Permit User Defined Extern Tags + + + + + + + + + Module Call Backs + + + + + + + + + + + + + + + + + + Driver Module + + + + + + + Library Module + + + + + + + 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. + Permit User Defined Extern Tags + + + + + + + + + Module Call Backs + + + + + + + + + + + + + + + + + + + Define the FFS File attributes within a sections and containing sections information + + + + + + + + + + + + + + + + + + Describe the valid content of a filename + + + + + + + + + + + + This is a list of Filenames + + + + + + + + + + + + + + + + + + Describe the list of a Formset elements + + + + + + Describe the valid content of a Formset + + + + + + + + + + + + + + + Describe the valid content of a Formset + + + + + + + + + + + + + + + + + + + Describe the valid content of a GUID + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Describe the valid content of a PCD GUID element + + + + + + + + + + + + + + + + + + + Describe the valid content of a PCD GUID element + + + + + + + + + + + + + + + + + + + + + + + + This section is used to describe how a GUID, PPI or PROTOCOL is to be used within the context of PCDs. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + One or More Package Names or Arch sections is required. Includes are not files, but paths to where header files are located. + + + + + + + + + + + + + + + + + + + Different Instances of Libraries + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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. + + + + + + + + + + + + This element defines a class of library, along with the path to the Include Header for this library + + + + + + + + + + + This section defines what Classes of Libraries that this library belongs to. A Library may belong to multiple different library classes. + + + + + + + + + + This section defines what Classes of Libraries that this library belongs to. A Library may belong to multiple different library classes. + + + + + + + + + + + + + + + + + + + + This is record format for a Module entry in the Framework Database file. + + + + This describes the fields in an Module record in the Framework Database. The Path field is relative to the workspace to Module Surface Area (MSA) files. + + + + + + + + + + + + + This tag is used in the Framework Package Database File to track package installation + + + + + + + + + + This is the valid content of a Module Name + + + + + + + + + + + + Describe the valid EFI Phase that the Module is designed to execute under. + + + + + + + + + Describe the valid content of a Surface Area Package Description (SPD) file + + + + + + + + + + + + + + + Describe the valid content of a Surface Area Package Description (SPD) file + + + + + + + + + + + + + + + + + + + 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. + + + + + + + + + + + + + + + + + + + Child of Module Surface Area documents, MSA and MBD files, Library Modules and Other Modules + One or more PcdData or PcdBuildData Elements Only one type is permitted + + + + + + This is a child of PCDs and can occur in the MSA and MBD files. + This is date element is used in the Module Surface Area (MSA) file and contains references to be used by a Platform Build + There is ONE required Attribute, ItemType + + + + + + + + + + + + + + + + Max Number of Bytes of the data. + + + + + + + + + + + + + + + + + + + + + + + + This tag is used in the Package Surface Area Description File to track package dependencies for a module + + + + + + + + + + + This defines the minimum header file needed to support a given ModuleType. + + + + + + + + + + This tag is used in the Framework Package Database File to track all packages installed in a workspace. + + + + + + This tag is used in the Framework Package Database File to track individual package information. The Path is a relative path to the SPD File. + + + + + + + + + + + + + + + + + + This tag is used in the Package Surface Area Description File to track package dependencies for a module + + + + + + + + + + + + + Describe the valid content of a filename + + + + + + + + + + + + Child of Framework Platform Description (FPD) + We permit the FPD to use an external XML file for PCD information or else the information must be contained within the XML data element, PcdBuildData. + + + + + + + Child of PcdBuildDeclarations + This is date element is used in the platform build description file and contains valid data for a Platform Build + There is ONE required Attribute, ItemType + + + + + + + This as a unique identifier defined for either this name space. + The Target Attribute may be used to define a Target name space, such as PCI. + + + + + + + + + + + + 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* + + + + + This Bit means that the Variable data is associated with HII + + + + + This bit enables the Vital Product Data area within flash for maintaining PCD information + + + + + This is only applicable to ItemType DYNAMIC_EX + + + + + + + + This element is a list of two entries per line, the first should be an integer, while the second entry should be a string value + + + + + + + + This section is for a list of SkuData Elements, ID and Value + + + + + + + + + + + + This value comes from a production line database, and has nothing to do with the number of SkuData IDs that have been defined. + + + + + This is the specific Sku ID for this build. + + + + + Max Number of Bytes of the data. + + + + + + + + + + + This is the Variable's GUID if and only if HII is enabled. + + + + + This is the C Name for the Variable, and is valid if and only HII is enabled. + + + + + 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.) + + + + + This field is only valid if AlternateNameSpaceEnable is true. + + + + + + + + + + + + + Child of Package Surface Area Description (SPD) + This permits entering information about a package's PCD information + + + + + + 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. + This element is valid for PcdInfo.xml and FPD files. + There is ONE required Attribute, ItemType + + + + + + + + + + + + + + + + Max Number of Bytes of the data. + + + + + + + + + + + + + + + + + + + + + + + Database Entry to locate the Platform Build Tips - path to FPD file. + + + + + + Define the Name of a Platform + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Provide for one or more Ppi or PpiNotify sections. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + If either Protocol or ProtocolNotify sections are needed, one or more of them should be specified within this section + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Sections refers to the Firmware Filesystem sections, PE32, UI, VER, DXS, etc. and how they are made + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Multiple Filenames may be specified, and they may also be scoped to a specific Architecture. + + + + + + + + + + + + + + + + + + This string is used to provide the name and version of the Specification that the component conforms to. + + + + + + + + + + + + This is list of System Table elements. + + + + + + + + + + + + + + + + + + + + This is a sub-element of BuildOptions + Permit Users to define their own custom ANT tasks. + + + + + + + + + + A list of EFI Variables described by GUID string pair. + + + + + + This is an EFI Variable Entry + + + + + + + + This entry represents the Hex Byte Offset {0x0, 0xn} to where the data starts. + + + + + This entry represents the Location of the Starting Bit {0,8} of the start of Data. A value of zero or 1 indicates that there is no BitOffset into the byte. + + + + + + + + + + + This number represents the number of bits to use {0, 7} starting at the BitOffset. A value of 0 indicates that the entire Byte should be used. + + + + + + + + + + + + + + + + + + This is an EFI Variable Entry + + + + + + + + This entry represents the Hex Byte Offset {0x0, 0xn} to where the data starts. + + + + + This entry represents the Location of the Starting Bit {0,8} of the start of Data. A value of zero or 1 indicates that there is no BitOffset into the byte. + + + + + + + + + + + This number represents the number of bits to use {0, 7} starting at the BitOffset. A value of 0 indicates that the entire Byte should be used. + + + + + + + + + + + + + + + + + + + + + diff --git a/Tools/XMLSchema/FrameworkDataTypes.xsd b/Tools/XMLSchema/FrameworkDataTypes.xsd new file mode 100644 index 0000000000..402d2b2752 --- /dev/null +++ b/Tools/XMLSchema/FrameworkDataTypes.xsd @@ -0,0 +1,1196 @@ + + + + + This schema defines EFI and Framework Attribute and Data Types. Only simpleType and attributeGroups are specified in this file. + + + + + FIRMWARE: Define a block name to be BLOCK[A-F0-9]{2} + + + + + + + + This describes what boot modes can be set (produced) or what boot modes can be supported, as defined in the Module Surface Area Specification + + + + + BOOT_WITH_FULL_CONFIGURATION + + + + + BOOT_WITH_MINIMAL_CONFIGURATION + + + + + BOOT_ASSUMING_NO_CONFIGURATION_CHANGES + + + + + BOOT_WITH_FULL_CONFIGURATION_PLUS_DIAGNOSTICS + + + + + BOOT_WITH_DEFAULT_SETTINGS + + + + + BOOT_ON_S2_RESUME + + + + + BOOT_ON_S3_RESUME + + + + + BOOT_ON_S4_RESUME + + + + + BOOT_ON_S5_RESUME + + + + + BOOT_ON_FLASH_UPDATE + + + + + BOOT_IN_RECOVERY_MODE + + + + + + + This describes the Boot Mode Usage Attributes, as defined in the Module Surface Area Specification + + + + + Supports the Boot Mode + + + + + Supports the Boot Mode on some execution path + + + + + Always changes the Boot Mode + + + + + Sometimes changes the Boot Mode + + + + + + + These are the supported EFI/Framework Execution Phases + + + + + + + + + + + + + + + + + + Conditional Targets are Other FeatureFlag Identifiers + + + + + + This describes the Data Hub Usage Attributes, as defined in the Module Surface Area Specification + + + + + The module always consumes a data hub entry via registering a filter driver. + + + + + The module will use a data hub entry if it exists via registering a filter driver. + + + + + The module always logs data into the data hub. + + + + + The module will log data into the data hub under certain circumstances + + + + + DataHub is produced and consumed only by this module + + + + + + + Date Format is YYYY-MM-DD HH:MM (24hr time format) + + + + + + + + The DefaultValue is a union of a string and an integer. + + + + + + + + + + + + + + + + + + + + + + + This describes the Supported Event Groups, as defined in the Module Surface Area Specification + + + + + + + + + + + + This describes the Event Usage Attributes, as defined in the Module Surface Area Specification + + + + + A module registers a notification function and requires it to be executed for the module to fully function. + + + + + A module registers a notification function and utilizes it if it's signaled. + + + + + A module will always signal the event. + + + + + A module will sometimes signal the event. + + + + + Event is produced and consumed only by this module + + + + + + + This defines the output types: Relocatable (REL,) Non-Relocatable (NREL,) Execute in Place (XIP) or Position Independent Code (PIC) + + + + + + + + + + + C Identifier Name for the Extern data as defined in the Module Surface Area Specification + + + + + + + + This describes the Extern Usage Attributes, as defined in the Module Surface Area Specification + + + + + The EXTERN is always imported by the module + + + + + The EXTERN is always exported by the module + + + + + + + This describes the FileName Usage Attributes, as defined in the Module Surface Area Specification + + + + + Module requires a file named GUID in an FV + + + + + Module will use a file named GUID in an FV if it is present + + + + + Module Always produces a file named GUID in an FV + + + + + Module sometimes produces a file named GUID in an FV + + + + + Filename is produced and consumed only by this module + + + + + + + This describes the Formset Usage Attributes, as defined in the Module Surface Area Specification + + + + + The Formset is always registered into HII by the module + + + + + Some execution paths through the modules register forms into HII + + + + + Formset is produced and consumed only by this module + + + + + + + These are the EFI/Framework Component Types defined in the EFI Development Kit (EDK) Getting Started Guide + + + + + + + + + + + + + + + + + + + + + + + + + + + FIRMWARE: Pre-defined Firmware Volume Region Types + + + + + + + + + + + + + + + + This describes the Guid Usage Attributes, as defined in the Module Surface Area Specification + + + + + Module always consumes the GUID + + + + + Module will consume the GUID only if the GUID is present + + + + + Module will always produce the GUID + + + + + Module sometimes produces the GUID + + + + + The default is the GUID that specifies the instance of the package + + + + + Guid is produced and consumed only by this module + + + + + + + Type of HOB that is being produced or consumed, as specified in the Module Surface Area Specification. + + + + + EFI_HOB_TYPE_HANDOFF + + + + + EFI_HOB_TYPE_MEMORY_ALLOCATION Note: The BaseName of the GUID is also required + + + + + EFI_HOB_TYPE_RESOURCE_DESCRIPTOR + + + + + EFI_HOB_TYPE_GUID_EXTENSION Note: The BaseName of the GUID is also required. + + + + + EFI_HOB_TYPE_FV + + + + + EFI_HOB_TYPE_CPU + + + + + EFI_HOB_TYPE_PEI_MEMORY_POOL + + + + + EFI_HOB_TYPE_CV + + + + + + + This describes the Hob Usage Attributes, as defined in the Module Surface Area Specification + + + + + The HOB must be present in the system + + + + + The HOB will be used if it's present in the system + + + + + The HOB is always produced by the module + + + + + The HOB will sometimes be produced by the module. + + + + + HOB is produced and consumed only by this module + + + + + + + This describes the Library Usage Attributes, as defined in the Module Surface Area Specification + + + + + A module always consumes the library. This Guid represents the class of the library. + + + + + + + + The default is the GUID that specifies the instance of the library. + + + + + Library is produced and consumed only by this module + + + + + + + These are the supported Framework Module Types + + + + + Module only depends on things in the MDE package and is environment neutral + + + + + Module is the Security Section and depends on catching the reset vectory + + + + + Module is the PEI Core + + + + + Module is a PEIM and depends on the PEI Services Table + + + + + Module is the DXE Core + + + + + Module is a DXE Driver and depends on the EFI Boot Services, EFI Runtime Services and the DXE Service Table + + + + + Module is a DXE Driver and depends on the EFI Boot Services, EFI Runtime Services and the DXE Service Table. The module runs after ExitBootServices and produces CreateEvent EventGroupExitBootServices and EventGroupVirtualAddressChange. Code written in this module can run in physical or virtual mode. + + + + + Module is a DXE Driver and depends on the EFI Boot Services, EFI Runtime Services and the DXE Service Table. The module runs after ExitBootServices and produces CreateEvent EventGroupExitBootServices and EventGroupVirtualAddressChange. Code written in this module can run in physical AND in virtual mode. + + + + + Module is a DXE Driver and depends on the EFI Boot Services, EFI Runtime Services and the DXE Service Table. The module also runs in SMM mode and depends on the SMM Service Table. + + + + + The TOOLS ModuleType is to be used for Tiano Tools modules + + + + + Module is a UEFI Driver and depends on the EFI and Service Tables. + + + + + Module is a UEFI Applciation and depens on the EFI and Service Tables. + + + + + Module does not fit into other classifications. The user must have an apriori knowledge of its Usage, and must provide that information to others using this module. + + + + + + + Define a flag to determine whether to put intermediate build files into a directory under the Module, or into a unified tree under the package or platform build trees + + + + + + + + + Packages are either source, binary or mixed packages. + + + + + + + + + + This describes the Package Usage Attributes, as defined in the Module Surface Area Specification + + + + + A module always consumes a package. This GUID represents the class of the package. + + + + + This is the Package we are creating. This GUID represents the class of the package. + + + + + The default is the GUID that specifies the instance of the package. + + + + + + + + + PCD Item is only a build time option and cannot be Dyanmic or Binary patched into the module. + + + + + PCD Item is set to a default value at build time and a binary of the module can be patched to update the value. + + + + + PCD Item is found via a PCD PPI in PEI or a PCD Protocol in DXE. The token that matches the PCD entry is either generated by the build (and is only unique to that build) or is from the default database. This form also implies a build option will be produced for this module that allows the user to pick FixedAtBuild, PatchableInModule or Dynamic. If no Type is specified, it defaults to Dynamic + + + + + PCD Item is found via a PCD PPI in PEI or a PCD Protocol in DXE. The token that matches the PCD entry is either generated by the build (and is only unique to that build) or is from the default database. This form also implies a build option will be produced for this module that allows the user to pick FixedAtBuild, PatchableInModule or Dynamic. If no Type is specified, it defaults to Dynamic + + + + + + + + + + + + + + + + + This describes the PCD FEATURE_FLAG Usage Attributes, as defined in the Module Surface Area Specification + + + + + Item is Always produced + + + + + Item is tagged as the default + + + + + + + + + The PCD Item represents a feature flag for the module. Features can only be selected at build time. Items of type FeatureFlag are used to conditionally construct module surface area that is produced as a result of a buld. + + + + + PCD Item is only a build time option and cannot be Dyanmic or Binary patched into the module. + + + + + PCD Item is set to a default value at build time and a binary of the module can be patched to update the value. + + + + + PCD Item is found via a PCD PPI in PEI or a PCD Protocol in DXE. The token that matches the PCD entry is either generated by the build (and is only unique to that build) or is from the default database. This form also implies a build option will be produced for this module that allows the user to pick FixedAtBuild, PatchableInModule or Dynamic. If no Type is specified, it defaults to Dynamic + + + + + PCD Item is found via a PCD PPI in PEI or a PCD Protocol in DXE. Any PCD token database is supported + + + + + + + The PCD Usage is only relevant to Items tagged with FeatureFlag, as defined in the Module Surface Area Specification + + + + + The PCD entry must always be provide as the build will include the code and the associated Surface Area. + + + + + If the FEATURE_FLAG is TRUE the build will include the code and the associated Surface Area. If the FEATURE_FLAG is FALSE, the code and the associated surface area is not included. + + + + + The PCD Entry is Always included in the build code + + + + + If the FEATURE_FLAG is TRUE the build will include the code and the associated Surface Area. If the FEATURE_FLAG is FALSE, the code and the associated surface area is not included. + + + + + "true" or "false". Indicates the default value for the PCD entry. This is used by the platform wizard to suggest values for a given platform build. + + + + + + + This describes the PPI Notify Usage Attributes, as defined in the Module Surface Area Specification + + + + + Module will consume the PPI if it's produced. Consumption is defined by executing the PPI notify function. + + + + + + + This describes the PPI Usage Attributes, as defined in the Module Surface Area Specification + + + + + Item is Required for the driver to function. This is part of the dependency expression of a module if the item represents a PPI or Protocol + + + + + Item is Consumed by the driver if the Item exists + + + + + Item is Always produced + + + + + Item is Conditionally produced + + + + + Ppi is produced and consumed only by this module + + + + + + + This describes the PROTOCOL Notify Usage Attributes, as defined in the Module Surface Area Specification + + + + + Module will Consume protocol if it's produced. Consumption is defined by executing the protocol notify function. + + + + + + + This describes the PROTOCOL Usage Attributes, as defined in the Module Surface Area Specification + + + + + Item is Required for the driver to function. This is part of the dependency expression of a module if the item represents a PPI or Protocol + + + + + Item is Consumed by the driver if the Item exists + + + + + Item is Always produced + + + + + Item is Conditionally produced + + + + + Protocol Only - Protocol is required by driver binding Start() function to make Start() succeed + + + + + Protocol Only - Protocol is produced by driver binding Start() function if and only if Start() succeeds + + + + + Protocol is produced and consumed only by this module + + + + + + + These are the currently Supportted Architectures type codes + + + + + + + + + + + + + + This describes the System Table Usage Attributes, as defined in the Module Surface Area Specification + + + + + Module requires a GUIDed entry in the system table + + + + + Module will use the GUIDed entry in the system table only if the GUID is present + + + + + Module Always produces a GUIDed entry in the system table + + + + + Module sometimes produces a GUIDed entry in the system table for some of its execution flow + + + + + SystemTable is produced and consumed only by this module + + + + + + + The Token data is union of HexDoubleWordDataType, GuidNaming Convetion and GuidArrayType. + + + + + + Supported Tool Chains are MSFT, INTEL, GCC and CYGWIN + + + + + + + + + + + Describes which way the directory separator is leaning, either \ for WINDOWS or / for UNIX + + + + + + + + + Define how we specify unicode strings + + + + + + + + This describes the Generic Usage Attributes, as defined in the Module Surface Area Specification + + + + + Item is Required for the driver to function. This is part of the dependency expression of a module if the item represents a PPI or Protocol + + + + + Item is Consumed by the driver if the Item exists + + + + + Item is Always produced + + + + + Item is Conditionally produced + + + + + Protocol Only - Protocol is required by driver binding Start() function to make Start() succeed + + + + + Protocol Only - Protocol is produced by driver binding Start() function if and only if Start() succeeds + + + + + Item is Private to the module and cannot be used by other modules + + + + + This is the default value for an Item + + + + + + + Describes the available Variable Offset data types, Bytes:Bits or BitSize + + + + + + + + This describes the Variable Usage Attributes, as defined in the Module Surface Area Specification + + + + + Module requires the variable entry to be set + + + + + Module will use the variable entry if it's set + + + + + Module Always will write the variable + + + + + Module sometimes writes the variable + + + + + Variable is produced and consumed only by this module + + + + + + + + + + + + + This type is to permit adding specific tools and tool arguments for User Defined tools, into the Module Build Description file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + These attributes are for the Pcds listed in PcdData, PcdEntry and/or PcdBuildData entries. + PcdUsage is only valid for PcdItemTypes = FEATURE_FLAG + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Attributes are either compressable and/or sequence order binding + + + + + + + + + Attributes for Sections, EncapsulationTag, EncapsulationType and OverrideID + + + + + + + + + + + + + + + + + diff --git a/Tools/XMLSchema/FrameworkHeaders.xsd b/Tools/XMLSchema/FrameworkHeaders.xsd new file mode 100644 index 0000000000..3937dc5c84 --- /dev/null +++ b/Tools/XMLSchema/FrameworkHeaders.xsd @@ -0,0 +1,160 @@ + + + + + + + This is the header for the Framework Package Database file. + + + + + + + + + + + + + + + + + + + This is the header for the Component Module Build Description (MBD) file. NOTE: The GUID may be different from the GUID in the MSA file, as the Guid is updated every time the file is changed, as the Guid may change if the contents of the file are changed. + + + + + + + + + + + + + + + + + This is the header for the Library Module Build Description (MBD) file. NOTE: The Guid may be different from the Guid in the MSA file, as the Guid may change when the contents of the file are changed.. + + + + + + + + + + + + + + + + + This is the Component Module Surface Area Description Header - a replacement for INF files. The GUID may change when the contents of the file are changed. + + + + + + + + + + + + + + + + + + + + + This is the Library Module Surface Area Description Header - a replacement for INF files. The Guid may change when the contents of the file are changed. + + + + + + + + + + + + + + + + + + + + + This head is for the Framework Platform Description file (FPD.) + + + + + + Define the Name of a Platform + + + + + + + + + + + + + + + + + + This head is for the Surface Area Package Description file (SPD) The Guid may change when the contents of the file are changed. + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tools/XMLSchema/FrameworkPlatformDataElements.xsd b/Tools/XMLSchema/FrameworkPlatformDataElements.xsd new file mode 100644 index 0000000000..5cbaaca699 --- /dev/null +++ b/Tools/XMLSchema/FrameworkPlatformDataElements.xsd @@ -0,0 +1,357 @@ + + + + + This schema defines EFI and Framework Platform Data Elements that are specific to platform creation. + + + + + + + + + + + + + + + + This element is used specify different name value pairs. + + + + + + + + + + + + This element is used specify different name value pairs. + + + + + + + + + + + + Permit multiple Capsule Sections + + + + + + + + + + + + + We allow specifying the Flash layout in this directory, or we allow specifying a flashmap filename + + + + + + + + + + + + + + + Define contents of the regions in flash. The files and data are placed in the output image in the order they are encountered in this definition. Multiple FlashDeviceImage sections may be defined. Which one the tool should use is specified by Name on the command line. + + + + + + + + + + + This is the Flash Devcie definition List + + + + + + + + + + + + + + + + Define OVERRIDE contents of the regions in flash. Only what is different here from what may defined in other areas (or files) is needed + + + + + + + + + + + This is the Flash Devcie Override Definition list. Only what is different from the previously defined stuff needs to be included. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This element is used specify different name value pairs. + + + + + + + + + + + + This section allows the user to define specific information regarding the FvImage + + + + + + + + + + + + This element is used to specify information in the Platform Description File. + This is a mixed element, allowing the user to specify the name of the MSA file, as well as to optionally specify additional override information. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This defines the required sections of a valid EFI/Tiano binary image + + + + + + + + + + + + + + + The list of EFI_FLASH_AREA Attributes + + + + + + + + + + The list of valid EFI Area Types + + + + + + + + + + + + + + Right now, only EFI_FLASH_MAP_HOB_GUID is defined + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Define the regions and their uses for the device + + + + + + + + + + + + Define the regions and their uses for the device + + + + + + + + + + + diff --git a/Tools/XMLSchema/NamingConvention.xsd b/Tools/XMLSchema/NamingConvention.xsd new file mode 100644 index 0000000000..4f998b827d --- /dev/null +++ b/Tools/XMLSchema/NamingConvention.xsd @@ -0,0 +1,307 @@ + + + + + This schema defines various data types and naming conventions including: base name, filename and directory naming conventions. These are all simple data types. + + + + Base Names must start with an upper case character, followed by one or more alphanumeric characters and/or an optional underscore (_) character followed by one or more alphanumeric characters. Examples: Base_name3, BASE_NAME3, BaseName3 + + + + + + + + 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. + + + + + + + + Directory naming convention is a UNION of DOS an UNIX directory path names + + + + + + Directory naming convention for Windows backslash (\) directory path name + + + + + + + + Directory naming convention for UNIX forwardslash (/) directory path name + + + + + + + + + + + + + This defines what a Filename is: Alphanumeric characters and optional underscore (_) or dash (-) characters, followed by a optional dot and more alphanumeric characters. + + + + + + + + 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. + + + + + + + + A GUID must contain five different Hexadecimal character sets that are separated by a dash (-) character. + + + + + + + + The GUID data is union of GuidNaming Convetion and GuidArrayType. + + + + + + Define a Hex 64 Bit Value to be 0x[a-f0-9]{16} + + + + + + + + Define a Hex Address, 0x[a-fA-F0-9]{1,16} + + + + + + + + Define a Hex Byte Value to be 0x[a-f0-9]{2} + + + + + + + + Define a Hex Value to be 0x[a-f0-9]+ + + + + + + + + Define a Hex Diget to be 0x[a-f0-9] + + + + + + + + Define a Hex Double Word Value to be 0x[a-f0-9]{8} + + + + + + + + Define a Hex Word Value to be 0x[a-f0-9]{4} + + + + + + + + This defines what a Library name is: alphanumeric characters and optional underscore (_) characters. + + + + + + + + What is a name, any series of alphanumeric characters and one or more underline characters that may occur in any position + + + + + + + + This describes the normal text of a paragraph that can be used in a license or description tag. + + + + + + This defines what a Platform Name is: Alphanumeric characters and optional underscore (_) or dash (-) characters, followed by a dot and more alphanumeric characters. + + + + + + + + This data type requires two or more words + + + + + + + + This defines what a Tool name is: Alphanumeric characters and optional underscore (_) or dash (-) characters, optionally followed by a dot and more alphanumeric characters. + + + + + + + + Definition of a UpperCase Letter type, which can be any combination of upper case characters followed by zero or more underscore and/or uppercase alphanumeric characters + + + + + + + + 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 + + + + + + + + Specify a User Name + + + + + + + + %VAR%(Directory)*(File_Names)* + + + + + + + + ($VAR | $( VAR) | ${VAR})(Directory)*(File_Names) + + + + + + + + VariableConvention is a UNION of: $VAR, $( VAR), ${VAR} and %VAR% and Directory and File Names + + + + + + The GUID data is union of GuidNaming Convetion and GuidArrayType. + + + + + + VariableConvention is a UNION of: $VAR, $( VAR), ${VAR} and %VAR% + + + + + + Definition of a DOS Variable Name: %VAR% It must start with an Upper Case character. + + + + + + + + Definition of a UNIX Variable Name: $VAR It must start with an Upper Case character. + + + + + + + + Definition of a UNIX Variable Name: $( VAR1) It must start with an Upper Case character. + + + + + + + + Definition of a UNIX Variable Name: ${ VAR1} It must start with an Upper Case character. + + + + + + + + Definition of a Version Number, which can be any combination of a number followed by zero or more alphanumeric-dot-alphanumeric characters + + + + + + + + Define Zero as a vaild value + + + + + + + + Definition of a Version Number, which can be any combination of a number followed by zero or more alphanumeric-dot-alphanumeric characters + + + + + + diff --git a/Tools/XMLSchema/SurfaceArea.xsd b/Tools/XMLSchema/SurfaceArea.xsd new file mode 100644 index 0000000000..7b309570ae --- /dev/null +++ b/Tools/XMLSchema/SurfaceArea.xsd @@ -0,0 +1,167 @@ + + + + + + + + + This is the valid format for the Package Database File. Note: MsaList is used for Modules that have not yet been included in a package. + + + + + + + + + + + + + This is the valid format for the Framework Platform Description (FPD) File. + + + + + + + + + + + + + + This is the Module Build Description that contains the list of overrides, library instances that can or must be used by the library. + + + + + + + + + + + + + + + + + + + + + + + + + + This is the Module Library Surface Area Description that contains the list of the module's source files, library classes that can or must be used by the module, the Class(es) of the Library that will be supported by the library, the Include Paths, Protocols and Ppi's that are either produced or consued. + + + + + + + + + + + + + + + + + + + + + + + + + + This is the Module Build Description that contains the list of overrides, library instances that can or must be used by the module. + + + + + + + + + + + + + + + + + + + + + + + + + + This is the Module Surface Area Description that contains the list of the module's source files, library classes that can or must be used by the module, the Include Paths, Protocols and Ppi's that are either produced or consued. + + + + + + + + + + + + + + + + + + + + + + + + + + This is valid content for a Package Surface Area Description (SPD) file. + + + + + + + + + + + + + + + + diff --git a/Tools/XMLSchema/SurfaceArea.xsdconfig b/Tools/XMLSchema/SurfaceArea.xsdconfig new file mode 100644 index 0000000000..aa52361510 --- /dev/null +++ b/Tools/XMLSchema/SurfaceArea.xsdconfig @@ -0,0 +1,16 @@ + + + + + org.tianocore + + + -- cgit v1.2.3