git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10502 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			1039 lines
		
	
	
		
			36 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			1039 lines
		
	
	
		
			36 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| ## @file
 | |
| # Open an FPD file and load all its contents to a PlatformClass object.
 | |
| #
 | |
| # Copyright (c) 2007, Intel Corporation. All rights reserved.<BR>
 | |
| # 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.
 | |
| #
 | |
| 
 | |
| ##
 | |
| # Import Modules
 | |
| #
 | |
| import os
 | |
| from CommonDataClass.PlatformClass import *
 | |
| from CommonDataClass.FdfClass import *
 | |
| from Common.XmlRoutines import *
 | |
| from Common.MigrationUtilities import *
 | |
| from EdkIIWorkspaceGuidsInfo import gEdkIIWorkspaceGuidsInfo
 | |
| 
 | |
| ## Load Platform Header
 | |
| #
 | |
| # Read an input Platform XML DOM object and return Platform Header class object
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlFpd                An XML DOM object read from FPD file
 | |
| # @param  FpdFileName           The file path of FPD File
 | |
| #
 | |
| # @retvel  PlatformHeader       A new Platform Header object loaded from XmlFpd
 | |
| #
 | |
| def LoadPlatformHeader(XmlFpd, FpdFileName):
 | |
|     PlatformHeader = PlatformHeaderClass()
 | |
|     
 | |
|     XmlTag = "PlatformSurfaceArea/PlatformHeader"
 | |
|     FpdHeader = XmlNode(XmlFpd, XmlTag)
 | |
|     
 | |
|     SetIdentification(PlatformHeader, FpdHeader, "PlatformName", FpdFileName)
 | |
|     SetCommonHeader(PlatformHeader, FpdHeader)
 | |
| 
 | |
|     XmlTag = "PlatformSurfaceArea/PlatformHeader/Specification"
 | |
|     List = XmlElement(XmlFpd, XmlTag).split()
 | |
|     SpecificationName = List[0]
 | |
|     SpecificationValue = List[1]
 | |
|     PlatformHeader.Specification = {SpecificationName:SpecificationValue}
 | |
|     
 | |
|     XmlTag = "PlatformSurfaceArea/PlatformDefinitions/SupportedArchitectures"
 | |
|     PlatformHeader.SupArchList = XmlElement(XmlFpd, XmlTag).split()
 | |
| 
 | |
|     XmlTag = "PlatformSurfaceArea/PlatformDefinitions/BuildTargets"
 | |
|     PlatformHeader.BuildTargets = XmlElement(XmlFpd, XmlTag).split()
 | |
| 
 | |
|     XmlTag = "PlatformSurfaceArea/PlatformDefinitions/IntermediateDirectories"
 | |
|     PlatformHeader.IntermediateDirectories = XmlElement(XmlFpd, XmlTag)
 | |
|     
 | |
|     XmlTag = "PlatformSurfaceArea/PlatformDefinitions/OutputDirectory"
 | |
|     PlatformHeader.OutputDirectory = XmlElement(XmlFpd, XmlTag)
 | |
| 
 | |
|     XmlTag = "PlatformSurfaceArea/PlatformDefinitions/SkuInfo"
 | |
|     List = map(LoadSkuId, XmlList(XmlFpd, XmlTag))
 | |
|     if List != []:
 | |
|         PlatformHeader.SkuIdName = List[0]
 | |
|     
 | |
|     return PlatformHeader
 | |
| 
 | |
| ## Load a Platform SkuId
 | |
| #
 | |
| # Read an input Platform XML DOM object and return a list of Platform SkuId
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param    XmlPlatformSkuInfo     An XML DOM object read from FPD file
 | |
| #
 | |
| # @retvel   PlatformSkuInfo        A SkuInfo loaded from XmlFpd
 | |
| #
 | |
| def LoadPlatformSkuInfo(XmlPlatformSkuInfo):
 | |
|     XmlTag = "SkuInfo/SkuId"
 | |
|     SkuInfo = []
 | |
|     SkuId = XmlElement(XmlPlatformSkuInfo, XmlTag)
 | |
|     SkuInfo.append(SkuId)
 | |
|     
 | |
|     XmlTag = "SkuInfo/Value"
 | |
|     Value = XmlElement(XmlPlatformSkuInfo, XmlTag)
 | |
|     SkuInfo.append(Value)
 | |
|     return SkuInfo
 | |
| 
 | |
| ## Load a Platform SkuId
 | |
| #
 | |
| # Read an input Platform XML DOM object and return a list of Platform SkuId
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param    XmlSkuInfo     An XML DOM object read from FPD file
 | |
| #
 | |
| # @retvel   List           A list of SkuId and SkuValue loaded from XmlFpd
 | |
| #
 | |
| def LoadSkuId(XmlSkuInfo):
 | |
|     XmlTag = "SkuInfo/UiSkuName"
 | |
|     SkuValue = XmlElement(XmlSkuInfo, XmlTag)
 | |
|     
 | |
|     XmlTag = "SkuInfo/UiSkuName"
 | |
|     List = map(LoadSkuID, XmlList(XmlSkuInfo, XmlTag))
 | |
|     if List != []:
 | |
|         SkuID = List[0]
 | |
|     #SkuID = XmlAttribute(XmlSkuInfo, XmlTag)
 | |
|     List = []
 | |
|     List.append(SkuID)
 | |
|     List.append(SkuValue)
 | |
|     return List
 | |
| 
 | |
| def LoadSkuID(XmlUiSkuName):
 | |
|     XmlTag = "SkuID"
 | |
|     SkuID = XmlAttribute(XmlUiSkuName, XmlTag)
 | |
|     return SkuID
 | |
| 
 | |
| ## Load a list of Platform SkuIds
 | |
| #
 | |
| # Read an input Platform XML DOM object and return a list of Platform SkuId
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param    XmlFpd                 An XML DOM object read from FPD file
 | |
| #
 | |
| # @retvel   PlatformSkuIds         A platform SkuIds object loaded from XmlFpd
 | |
| #
 | |
| def LoadPlatformSkuInfos(XmlFpd):
 | |
|     PlatformSkuIds = SkuInfoListClass()
 | |
| 
 | |
|     SkuInfoList = []
 | |
|     
 | |
|     XmlTag = "PlatformSurfaceArea/PlatformDefinitions/SkuInfo"
 | |
|     List = map(LoadSkuId, XmlList(XmlFpd, XmlTag))
 | |
|     SkuInfoList = List
 | |
|     
 | |
|     XmlTag = "PlatformSurfaceArea/PlatformDefinitions/SkuInfo/UiSkuName"
 | |
|     Value = XmlElement(XmlFpd, XmlTag)
 | |
|     
 | |
|     XmlTag = "PlatformSurfaceArea/DynamicPcdBuildDefinitions/PcdBuildData/SkuInfo"
 | |
|     # here return a List
 | |
|     List = map(LoadPlatformSkuInfo, XmlList(XmlFpd, XmlTag))
 | |
| 
 | |
|     for SkuInfo in List:
 | |
|         SkuId = SkuInfo[0]
 | |
|         Value = SkuInfo[1]
 | |
| 
 | |
|         SkuInfoList.append(SkuInfo)
 | |
| 
 | |
|     PlatformSkuIds.SkuInfoList = SkuInfoList
 | |
| 
 | |
|     return PlatformSkuIds
 | |
| 
 | |
| ## Load Platform Module Build Option
 | |
| #
 | |
| # Read an input Platform XML DOM object and return Platform Module Build Option class object
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param    XmlModuleBuildOption            An XML DOM object read from FPD file
 | |
| #
 | |
| # @retvel   PlatformBuildOption             A Platform Build Option object loaded from XmlFpd
 | |
| #
 | |
| def LoadModuleBuildOption(XmlModuleBuildOption):
 | |
|     PlatformBuildOption = PlatformBuildOptionClass()
 | |
|     PlatformBuildOption.UserDefinedAntTasks = {}
 | |
|     
 | |
|     XmlTag = "BuildOptions/Options/Option"
 | |
|     PlatformBuildOption.Options = map(LoadBuildOption, XmlList(XmlModuleBuildOption, XmlTag))
 | |
|     
 | |
|     PlatformBuildOption.UserExtensions = {}
 | |
|     PlatformBuildOption.FfsKeyList = {}
 | |
|     return PlatformBuildOption
 | |
| 
 | |
| ## Load Platform Module Extern
 | |
| #
 | |
| # Read an input Platform XML DOM object and return Platform Module Extern class object
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param    XmlModuleExtern                  An XML DOM object read from FPD file
 | |
| #
 | |
| # @retvel   PlatformModuleExtern             A Platform Module Extern object loaded from XmlFpd
 | |
| #
 | |
| def LoadModuleExtern(XmlModuleExtern):
 | |
|     PlatformModuleExtern = []
 | |
|     
 | |
|     XmlTag = "Externs/PcdIsDriver"
 | |
|     PcdIsDriver = XmlElement(XmlModuleExtern, XmlTag)
 | |
|     PlatformModuleExtern.append(PcdIsDriver)
 | |
|     
 | |
|     XmlTag = "Externs/Specification"
 | |
|     Specification = XmlElement(XmlModuleExtern, XmlTag)
 | |
|     PlatformModuleExtern.append(Specification)
 | |
|     
 | |
|     XmlTag = "Externs/Extern"
 | |
| 
 | |
|     return PlatformModuleExtern
 | |
| 
 | |
| ## Load Platform ModuleSaBuildOptions
 | |
| #
 | |
| # Read an input Platform XML DOM object and return Platform ModuleSaBuildOptions class object
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param    XmlModuleSaBuildOptions            An XML DOM object read from FPD file
 | |
| #
 | |
| # @retvel   PlatformBuildOptions               A list of Platform ModuleSaBuildOption object loaded from XmlFpd
 | |
| #
 | |
| def LoadPlatformModuleSaBuildOption(XmlModuleSA):
 | |
|     PlatformModuleSaBuildOption = PlatformBuildOptionClasses()
 | |
|     
 | |
|     XmlTag = "ModuleSA/ModuleSaBuildOptions/FvBinding"
 | |
|     PlatformModuleSaBuildOption.FvBinding = XmlElement(XmlModuleSA, XmlTag)
 | |
|     
 | |
|     XmlTag = "ModuleSA/ModuleSaBuildOptions/FfsFormatKey"
 | |
|     PlatformModuleSaBuildOption.FfsFormatKey = XmlElement(XmlModuleSA, XmlTag)
 | |
|     
 | |
|     XmlTag = "ModuleSA/ModuleSaBuildOptions/FfsFileNameGuid"
 | |
|     PlatformModuleSaBuildOption.FfsFileNameGuid = XmlElement(XmlModuleSA, XmlTag)
 | |
|     
 | |
|     XmlTag = "ModuleSA/ModuleSaBuildOptions/Options/Option"
 | |
|     PlatformModuleSaBuildOption.BuildOptionList = map(LoadBuildOption, XmlList(XmlModuleSA, XmlTag))
 | |
| 
 | |
|     return PlatformModuleSaBuildOption
 | |
| 
 | |
| ## Load a list of Platform Library Classes
 | |
| #
 | |
| # Read an input Platform XML DOM object and return a list of Library Classes
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlLibraryInstance       An XML DOM object read from FPD file
 | |
| #
 | |
| # @retvel  LibraryInstance         A Library Instance loaded from XmlFpd
 | |
| #
 | |
| def LoadPlatformModuleLibraryInstance(XmlLibraryInstance):
 | |
|     LibraryInstance = []
 | |
| 
 | |
|     XmlTag = "ModuleGuid"
 | |
|     ModuleGuid = XmlAttribute(XmlLibraryInstance, XmlTag)
 | |
|     
 | |
|     ModulePath = gEdkIIWorkspaceGuidsInfo.ResolveModuleFilePath(ModuleGuid)
 | |
|     ModuleMSAFile = ModulePath.replace('.inf', '.msa')
 | |
|     WorkSpace = os.getenv('WORKSPACE')
 | |
|     ModuleMSAFileName = os.path.join(WorkSpace, ModuleMSAFile)
 | |
|     XmlMsa = XmlParseFile(ModuleMSAFileName)
 | |
|     
 | |
|     XmlTag = "ModuleSurfaceArea/LibraryClassDefinitions/LibraryClass/Keyword"
 | |
|     Name = XmlElement(XmlMsa, XmlTag)
 | |
|     LibraryInstance.append(Name)
 | |
|     LibraryInstance.append(ModulePath)
 | |
|     
 | |
|     #XmlTag = "PackageGuid"
 | |
|     #PackageGuid = XmlAttribute(XmlLibraryInstance, XmlTag)
 | |
|     #LibraryInstance.append(PackageGuid)
 | |
|     return LibraryInstance
 | |
| 
 | |
| ## Load a Library Class
 | |
| #
 | |
| # Read an input Platform XML DOM object and return a library class object
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param    XmlLibraryClass       An XML DOM object read from FPD file
 | |
| #
 | |
| # @retvel   SupModuleList         A Library Class Supported Module List object loaded from XmlFpd
 | |
| #
 | |
| def LoadLibraryClassSupModuleList(XmlLibraryClass):
 | |
|     XmlTag = "Usage"
 | |
|     Usage = XmlAttribute(XmlLibraryClass, XmlTag)
 | |
|     if Usage == "ALWAYS_PRODUCED":
 | |
|         XmlTag = "SupModuleList"
 | |
|         SupModuleList = XmlAttribute(XmlLibraryClass, XmlTag).split()
 | |
|         return SupModuleList
 | |
|         
 | |
| ## Load Platform Library Class
 | |
| #
 | |
| # Read an input Platform XML DOM object and return Platform module class object
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param    XmlLibraries             An XML DOM object read from FPD file
 | |
| #
 | |
| # @retvel   PlatformLibraryClass     A Platform Library Class object loaded from XmlFpd
 | |
| #
 | |
| def LoadPlatformLibraryClass(XmlPlatformLibraryClass):
 | |
|     PlatformLibraryInstance = PlatformLibraryClass()
 | |
| 
 | |
|     XmlTag = "ModuleGuid"
 | |
|     LibraryInstanceModuleGuid = XmlAttribute(XmlPlatformLibraryClass, XmlTag)
 | |
|     
 | |
|     XmlTag = "PackageGuid"
 | |
|     LibraryInstancePackageGuid = XmlAttribute(XmlPlatformLibraryClass, XmlTag)
 | |
|     
 | |
|     LibraryInstancePath = gEdkIIWorkspaceGuidsInfo.ResolveModuleFilePath(LibraryInstanceModuleGuid)
 | |
|     
 | |
|     if LibraryInstancePath != "": # if LibraryInstancePath == "" that's because the module guid cannot be resolved
 | |
|         PlatformLibraryInstance.FilePath = LibraryInstancePath
 | |
|         # replace *.inf to *.msa
 | |
|         LibraryInstanceMSAName = LibraryInstancePath.replace('.inf', '.msa')
 | |
|         WorkSpace = os.getenv('WORKSPACE')
 | |
|         LibraryInstanceMSAPath = os.path.join(WorkSpace, LibraryInstanceMSAName)
 | |
|         
 | |
|         PlatformLibraryInstance.FilePath = LibraryInstancePath
 | |
|     
 | |
|         XmlMsa = XmlParseFile(LibraryInstanceMSAPath)
 | |
| 
 | |
|         XmlTag = "ModuleSurfaceArea/MsaHeader/ModuleName"
 | |
|         PlatformLibraryInstance.Name = XmlElement(XmlMsa, XmlTag)
 | |
|     
 | |
|         XmlTag = "ModuleSurfaceArea/MsaHeader/ModuleType"
 | |
|         PlatformLibraryInstance.ModuleType = XmlElement(XmlMsa, XmlTag)
 | |
|     
 | |
|         if PlatformLibraryInstance.ModuleType != "BASE":
 | |
|             XmlTag = "ModuleSurfaceArea/LibraryClassDefinitions/LibraryClass"
 | |
|             List = map(LoadLibraryClassSupModuleList, XmlList(XmlMsa, XmlTag))
 | |
|             if List != []:
 | |
|                 PlatformLibraryInstance.SupModuleList = List[0]
 | |
|         XmlTag = "ModuleSurfaceArea/ModuleDefinitions/SupportedArchitectures"
 | |
|         PlatformLibraryInstance.SupArchList = XmlElement(XmlMsa, XmlTag).split()
 | |
|     
 | |
|         PlatformLibraryInstance.ModuleGuid = LibraryInstanceModuleGuid
 | |
|     
 | |
|         XmlTag = "ModuleSurfaceArea/MsaHeader/Version"
 | |
|         PlatformLibraryInstance.ModuleVersion = XmlElement(XmlMsa, XmlTag)
 | |
|     
 | |
|         PlatformLibraryInstance.PackageGuid = LibraryInstancePackageGuid
 | |
|         PlatformLibraryInstance.PackageVersion = ''
 | |
|     
 | |
|         return PlatformLibraryInstance
 | |
| 
 | |
| ## Load Platform Library Classes
 | |
| #
 | |
| # Read an input Platform XML DOM object and return Platform module class object
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param    XmlLibraries             An XML DOM object read from FPD file
 | |
| #
 | |
| # @retvel   PlatformLibraryClasses    A list of Platform Library Class object loaded from XmlFpd
 | |
| #
 | |
| def LoadPlatformLibraryClasses(XmlFpd):
 | |
|     PlatformLibraryInstances = PlatformLibraryClasses()
 | |
|     PlatformLibraryInstances.LibraryList = []
 | |
| 
 | |
|     List = []
 | |
|     XmlTag = "PlatformSurfaceArea/FrameworkModules/ModuleSA/Libraries/Instance"
 | |
|     List = map(LoadPlatformLibraryClass, XmlList(XmlFpd, XmlTag))
 | |
|     #List.sort()
 | |
|     if List == []:
 | |
|         print "Error"
 | |
|     else:
 | |
|         PlatformLibraryInstances.LibraryList = List
 | |
|     
 | |
|     return PlatformLibraryInstances
 | |
| 
 | |
| ## Load Platform module
 | |
| #
 | |
| # Read an input Platform XML DOM object and return Platform module class object
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param    XmlModuleSA            An XML DOM object read from FPD file
 | |
| #
 | |
| # @retvel   PlatformModule         A Platform module object loaded from XmlFpd
 | |
| #
 | |
| def LoadModuleSA(XmlModuleSA):
 | |
|     PlatformModule = PlatformModuleClass()
 | |
| 
 | |
|     # three parts: Libraries instances, PcdBuildDefinition, ModuleSaBuildOptions
 | |
|     XmlTag = "ModuleSA/Libraries/Instance"
 | |
| 
 | |
|     PlatformModule.LibraryClasses = map(LoadPlatformModuleLibraryInstance, XmlList(XmlModuleSA, XmlTag))
 | |
| 
 | |
|     XmlTag = "ModuleSA/PcdBuildDefinition/PcdData"
 | |
|     PlatformModule.PcdBuildDefinitions = map(LoadPlatformPcdData, XmlList(XmlModuleSA, XmlTag))
 | |
| 
 | |
|     XmlTag = "ModuleSA/ModuleSaBuildOptions"
 | |
|     PlatformModule.ModuleSaBuildOption = LoadPlatformModuleSaBuildOption(XmlModuleSA)
 | |
| 
 | |
|     XmlTag = "ModuleSA/BuildOptions"
 | |
|     PlatformModule.BuildOptions = map(LoadModuleBuildOption, XmlList(XmlModuleSA, XmlTag)) #bugbug fix me
 | |
|     
 | |
|     XmlTag = "ModuleSA/Externs"
 | |
|     PlatformModule.Externs = map(LoadModuleExtern, XmlList(XmlModuleSA, XmlTag)) #bugbug fix me
 | |
|     
 | |
|     XmlTag = "SupArchList"
 | |
|     PlatformModule.SupArchList = XmlAttribute(XmlModuleSA, XmlTag).split()
 | |
|     
 | |
|     # the package guid which the module depends on, do not care for now
 | |
|     XmlTag = "PackageGuid"
 | |
|     PlatformModule.PackageGuid = XmlAttribute(XmlModuleSA, XmlTag)
 | |
| 
 | |
|     # the module guid, use this guid to get the module *.msa file and convert it to *.inf file with path
 | |
|     XmlTag = "ModuleGuid"
 | |
|     PlatformModule.ModuleGuid = XmlAttribute(XmlModuleSA, XmlTag)
 | |
|     # use this guid to find the *.msa file path or FilePath $(WORKSPACE)/EdkModulePkg/Core/Dxe/DxeMain.msa
 | |
|     # then convert $(WORKSPACE)/EdkModulePkg/Core/Dxe/DxeMain.msa to $(WORKSPACE)/EdkModulePkg/Core/Dxe/DxeMain.inf, it's FilePath
 | |
|     PlatformModulePath = gEdkIIWorkspaceGuidsInfo.ResolveModuleFilePath(PlatformModule.ModuleGuid)
 | |
| 
 | |
|     PlatformModule.FilePath = PlatformModulePath # *.inf file path
 | |
|     # *.inf back to *.msa
 | |
|     ModuleMSAFileName = PlatformModulePath.replace('.inf', '.msa')
 | |
|     WorkSpace = os.getenv('WORKSPACE')
 | |
|     ModuleMSAFileName = os.path.join(WorkSpace, ModuleMSAFileName)
 | |
|     # Open this module
 | |
|     #ModuleMSA = open(ModuleMSAFileName, "r")
 | |
|     XmlMsa = XmlParseFile(ModuleMSAFileName)
 | |
| 
 | |
|     XmlTag = "ModuleSurfaceArea/MsaHeader/ModuleName"
 | |
|     PlatformModule.Name = XmlElement(XmlMsa, XmlTag)     # ModuleName
 | |
| 
 | |
|     XmlTag = "ModuleSurfaceArea/MsaHeader/ModuleType"
 | |
|     PlatformModule.ModuleType = XmlElement(XmlMsa, XmlTag)
 | |
| 
 | |
|     # IA32, X64, IPF and EBC which the module support arch
 | |
|     #XmlTag = "ModuleSurfaceArea/ModuleDefinitions/SupportedArchitectures"
 | |
|     #PlatformModule.SupArchList = XmlElement(XmlMsa, XmlTag).split()
 | |
| 
 | |
|     #XmlTag = "ModuleSurfaceArea/MsaHeader/"
 | |
|     PlatformModule.Type = ''     #LIBRARY | LIBRARY_CLASS | MODULE, used by dsc. New in DSC spec
 | |
| 
 | |
|     PlatformModule.ExecFilePath = '' # New in DSC spec
 | |
| 
 | |
|     XmlTag = "ModuleSurfaceArea/MsaHeader/Specification"
 | |
|     PlatformModule.Specifications = XmlElement(XmlMsa, XmlTag).split()
 | |
| 
 | |
|     return PlatformModule
 | |
| 
 | |
| ## Load Platform modules
 | |
| #
 | |
| # Read an input Platform XML DOM object and return a list of Platform modules class object
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param    XmlFpd                  An XML DOM object read from FPD file
 | |
| #
 | |
| # @retvel   PlatformModules         A list of Platform modules object loaded from XmlFpd
 | |
| #
 | |
| def LoadPlatformModules(XmlFpd):
 | |
|     PlatformModules = PlatformModuleClasses()
 | |
|     
 | |
|     XmlTag = "PlatformSurfaceArea/FrameworkModules/ModuleSA"
 | |
|     PlatformModules.ModuleList = map(LoadModuleSA, XmlList(XmlFpd, XmlTag))
 | |
|     
 | |
|     return PlatformModules
 | |
| 
 | |
| ## Load Platform Flash Definition File
 | |
| #
 | |
| # Read an input Platform XML DOM object and return Platform Flash Definition File class object
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param    XmlFpd                              An XML DOM object read from FPD file
 | |
| # @param    FpdFileName                         The file path of FPD File
 | |
| #
 | |
| # @retvel   PlatformFlashDefinitionFile         A new Platform Flash Definition File object loaded from XmlFpd
 | |
| #
 | |
| def LoadPlatformFlashDefinitionFile(XmlFpd, FpdFileName):
 | |
|     PlatformFlashDefinitionFile = PlatformFlashDefinitionFileClass()
 | |
|     
 | |
|     XmlTag = "PlatformSurfaceArea/Flash/FlashDefinitionFile"
 | |
|     PlatformFlashDefinitionFile.FilePath = XmlElement(XmlFpd, XmlTag)
 | |
|     
 | |
|     XmlTag = "PlatformSurfaceArea/Flash/FlashDefinitionFile/Id"
 | |
|     PlatformFlashDefinitionFile.Id = XmlAttribute(XmlFpd, XmlTag)
 | |
|     
 | |
|     XmlTag = "PlatformSurfaceArea/Flash/FlashDefinitionFile/UiName"
 | |
|     PlatformFlashDefinitionFile.UiName = XmlAttribute(XmlFpd, XmlTag)
 | |
|     
 | |
|     XmlTag = "PlatformSurfaceArea/Flash/FlashDefinitionFile/Preferred"
 | |
|     PlatformFlashDefinitionFile.Preferred = XmlAttribute(XmlFpd, XmlTag)
 | |
|     
 | |
|     return PlatformFlashDefinitionFile
 | |
| 
 | |
| ## Load Platform User Defined Ant Tasks
 | |
| #
 | |
| # Read an input Platform XML DOM object and return platform
 | |
| # User Defined Ant Tasks contained in the DOM object.
 | |
| #
 | |
| # @param   XmlUserDefinedAntTasks   An XML DOM object read from FPD file
 | |
| #
 | |
| # @retvel  AntTask                  An Ant Task loaded from XmlFpd
 | |
| #
 | |
| def LoadUserDefinedAntTasks(XmlFpd):
 | |
|     Dict = {}
 | |
|     AntTask = PlatformAntTaskClass()
 | |
| 
 | |
|     XmlTag = "PlatformSurfaceArea/BuildOptions/UserDefinedAntTasks/AntTask/Id"
 | |
|     AntTask.Id = XmlAttribute(XmlFpd, XmlTag)
 | |
|     
 | |
|     XmlTag = "PlatformSurfaceArea/BuildOptions/UserDefinedAntTasks/AntTask/AntCmdOptions"
 | |
|     AntTask.AntCmdOptions = XmlElement(XmlFpd, XmlTag)
 | |
|     
 | |
|     XmlTag = "PlatformSurfaceArea/BuildOptions/UserDefinedAntTasks/AntTask/Filename"
 | |
|     AntTask.FilePath = XmlElement(XmlFpd, XmlTag)
 | |
|     
 | |
|     Dict[AntTask.Id] = AntTask
 | |
|     return Dict
 | |
| 
 | |
| ## Load Platform Build Options
 | |
| #
 | |
| # Read an input Platform XML DOM object and return a list of platform
 | |
| # Build Option contained in the DOM object.
 | |
| #
 | |
| # @param   XmlBuildOptions              An XML DOM object read from FPD file
 | |
| #
 | |
| # @retvel  PlatformBuildOptions         A list of platform Build Options loaded from XmlFpd
 | |
| #
 | |
| def LoadBuildOptions(XmlBuildOptions):
 | |
|     XmlTag = "Option"
 | |
|     return map(LoadBuildOption, XmlList(XmlBuildOptions, XmlTag)) # LoadBuildOption is a method in MigrationUtilities.py
 | |
| 
 | |
| ## Load Platform Build Option
 | |
| #
 | |
| # Read an input Platform XML DOM object and return a Build Option
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param   XmlFpd                      An XML DOM object read from FPD file
 | |
| #
 | |
| # @retvel  PlatformBuildOption         A Build Options loaded from XmlFpd
 | |
| #
 | |
| def LoadPlatformBuildOption(XmlBuildOptions):
 | |
|     PlatformBuildOption = PlatformBuildOptionClass()
 | |
|     
 | |
|     # handle UserDefinedAntTasks
 | |
|     XmlTag = "BuildOptions/UserDefinedAntTasks/AntTask"
 | |
|     PlatformBuildOption.UserDefinedAntTasks = LoadUserDefinedAntTasks(XmlTag)
 | |
|     
 | |
|     # handle Options
 | |
|     XmlTag = "BuildOptions/Options/Option"
 | |
|     PlatformBuildOption.Options = map(LoadBuildOption, XmlList(XmlBuildOptions, XmlTag))
 | |
|     
 | |
|     # handle UserExtensions
 | |
|     XmlTag = "BuildOptions/UserExtensions"
 | |
|     PlatformBuildOption.UserExtensions = LoadUserExtensions(XmlTag) # from MigrationUtilities.py LoadUserExtensions
 | |
| 
 | |
|     # handle Ffs
 | |
|     XmlTag = "BuildOptions/Ffs/FfsKey"
 | |
|     PlatformBuildOption.FfsKeyList = map(LoadPlatformFfs, XmlList(XmlBuildOptions, XmlTag))
 | |
| 
 | |
|     return PlatformBuildOption
 | |
| 
 | |
| ## Load Platform Ffs Dictionary
 | |
| #
 | |
| # Read an input Platform XML DOM object and return a platform Ffs Dictionary
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlFpd     An XML DOM object read from FPD file
 | |
| #
 | |
| # @retvel  Dict      A platform Ffs Dict loaded from XmlFpd
 | |
| #
 | |
| def LoadPlatformFfsDict(XmlFpd):
 | |
|     Dict = {}
 | |
|     XmlTag = "PlatformSurfaceArea/BuildOptions/Ffs"
 | |
|     List = map(LoadPlatformFfs, XmlList(XmlFpd, XmlTag))
 | |
|     if List != []:
 | |
|         for Ffs in List:
 | |
|             Dict[Ffs.Key] = Ffs
 | |
|     return Dict
 | |
| 
 | |
| ## Load Platform Ffs Section
 | |
| #
 | |
| # Read an input Platform XML DOM object and return a platform Ffs Section
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param   XmlFfs                  An XML DOM object read from FPD file
 | |
| #
 | |
| # @retvel  PlatformFfsSection      A platform Ffs Section loaded from XmlFpd
 | |
| #
 | |
| def LoadPlatformFfsSection(XmlFfsSection):
 | |
|     PlatformFfsSection = PlatformFfsSectionClass()
 | |
|     
 | |
|     XmlTag = ""
 | |
|     PlatformFfsSection.BindingOrder = ''
 | |
|     
 | |
|     XmlTag = ""
 | |
|     PlatformFfsSection.Compressible = ''
 | |
|     
 | |
|     XmlTag = "SectionType"
 | |
|     PlatformFfsSection.SectionType = XmlAttribute(XmlFfsSection, XmlTag)
 | |
|     
 | |
|     XmlTag = ""
 | |
|     PlatformFfsSection.EncapsulationType = ''
 | |
|     
 | |
|     XmlTag = ""
 | |
|     PlatformFfsSection.ToolName = ''
 | |
|     
 | |
|     XmlTag = ""
 | |
|     PlatformFfsSection.Filenames = []
 | |
|     
 | |
|     XmlTag = ""
 | |
|     PlatformFfsSection.Args = ''
 | |
|     
 | |
|     XmlTag = ""
 | |
|     PlatformFfsSection.OutFile = ''
 | |
|     
 | |
|     XmlTag = ""
 | |
|     PlatformFfsSection.OutputFileExtension = ''
 | |
|     
 | |
|     XmlTag = ""
 | |
|     PlatformFfsSection.ToolNameElement = ''
 | |
|     
 | |
|     return PlatformFfsSection
 | |
| 
 | |
| ## Load Platform Ffs Sections
 | |
| #
 | |
| # Read an input Platform XML DOM object and return a platform Ffs Sections
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param   XmlFfs                   An XML DOM object read from FPD file
 | |
| #
 | |
| # @retvel  PlatformFfsSections      A platform Ffs Sections loaded from XmlFpd
 | |
| #
 | |
| def LoadFfsSections():
 | |
|     PlatformFfsSections = PlatformFfsSectionsClass()
 | |
|     PlatformFfsSections.BindingOrder = ''
 | |
|     PlatformFfsSections.Compressible = ''
 | |
|     PlatformFfsSections.SectionType = ''
 | |
|     PlatformFfsSections.EncapsulationType = ''
 | |
|     PlatformFfsSections.ToolName = ''
 | |
|     PlatformFfsSections.Section = []
 | |
|     PlatformFfsSections.Sections = []
 | |
|     
 | |
|     return PlatformFfsSections
 | |
| 
 | |
| ## Load Platform Ffs Sections
 | |
| #
 | |
| # Read an input Platform XML DOM object and return a platform Ffs Sections
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param   XmlFfs                   An XML DOM object read from FPD file
 | |
| #
 | |
| # @retvel  PlatformFfsSections      A platform Ffs Sections loaded from XmlFpd
 | |
| #
 | |
| def LoadPlatformFfsSections(XmlFfsSections):
 | |
|     PlatformFfsSections = PlatformFfsSectionsClass()
 | |
|     
 | |
|     XmlTag = ""
 | |
|     PlatformFfsSections.BindingOrder = ''
 | |
|     
 | |
|     XmlTag = ""
 | |
|     Compressible = ''
 | |
|     
 | |
|     XmlTag = ""
 | |
|     SectionType = ''
 | |
|     
 | |
|     XmlTag = "EncapsulationType"
 | |
|     EncapsulationType = XmlAttribute(XmlFfsSections, XmlTag)
 | |
|     
 | |
|     XmlTag = ""
 | |
|     ToolName = ''
 | |
|     
 | |
|     XmlTag = "Sections/Section"
 | |
|     Section = []   #[ PlatformFfsSectionClass, ... ]
 | |
|     Section = map(LoadPlatformFfsSection, XmlList(XmlFfsSections, XmlTag))
 | |
|     
 | |
|     
 | |
|     XmlTag = "Sections/Sections"
 | |
|     Sections = map(LoadFfsSections, XmlList(XmlFfsSections, XmlTag)) #[ PlatformFfsSectionsClass, ...]
 | |
|     
 | |
|     return PlatformFfsSections
 | |
| 
 | |
| ## Load Platform Ffs Attribute
 | |
| #
 | |
| # Read an input Platform XML DOM object and return a platform Ffs Attribute
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param   XmlFfs    An XML DOM object read from FPD file
 | |
| #
 | |
| # @retvel  List      A platform Ffs Attribute loaded from XmlFpd
 | |
| #
 | |
| def LoadFfsAttribute(XmlFfs):
 | |
|     List = []
 | |
|     XmlTag = "Ffs/Attribute"
 | |
|     for XmlAttr in XmlList(XmlFfs, XmlTag):
 | |
|         XmlTag = "Name"
 | |
|         Name = XmlAttribute(XmlAttr, XmlTag)
 | |
|         XmlTag = "Value"
 | |
|         Value = XmlAttribute(XmlAttr, XmlTag)
 | |
|         List.append([Name,Value])
 | |
|     return List
 | |
| 
 | |
| ## Load a list of Platform Build Options
 | |
| #
 | |
| # Read an input Platform XML DOM object and return a list of Build Options
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param   XmlFfs              An XML DOM object read from FPD file
 | |
| #
 | |
| # @retvel  PlatformFfsKey      A platform Ffs key loaded from XmlFpd
 | |
| #
 | |
| def LoadPlatformFfs(XmlFfs):
 | |
|     PlatformFfs = PlatformFfsClass()
 | |
|     
 | |
|     PlatformFfs.Attribute = {}
 | |
|     Dict = {}
 | |
| 
 | |
|     List = LoadFfsAttribute(XmlFfs)
 | |
|     
 | |
|     XmlTag = "Ffs/Sections/Sections"
 | |
|     PlatformFfs.Sections = map(LoadPlatformFfsSections, XmlList(XmlFfs, XmlTag)) #[PlatformFfsSectionsClass, ...]
 | |
|     
 | |
|     for Item in List:
 | |
|         Name = Item[0]
 | |
|         Value = Item[1]
 | |
|         for Item in PlatformFfs.Sections:
 | |
|             Dict[(Name, Item)] = Value
 | |
|     PlatformFfs.Attribute = Dict
 | |
|     
 | |
|     XmlTag = "Ffs/FfsKey"
 | |
|     PlatformFfs.Key = XmlAttribute(XmlFfs, XmlTag)
 | |
|     
 | |
|     return PlatformFfs
 | |
| 
 | |
| ## Load a list of Platform Build Options
 | |
| #
 | |
| # Read an input Platform XML DOM object and return a list of Build Options
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param   XmlFpd                       An XML DOM object read from FPD file
 | |
| #
 | |
| # @retvel  PlatformBuildOptions         A list of Build Options loaded from XmlFpd
 | |
| #
 | |
| def LoadPlatformBuildOptions(XmlFpd):
 | |
|     PlatformBuildOptions = PlatformBuildOptionClass()
 | |
| 
 | |
|     PlatformBuildOptions.UserDefinedAntTasks = LoadUserDefinedAntTasks(XmlFpd)
 | |
|     
 | |
|     XmlTag = "PlatformSurfaceArea/BuildOptions/Options/Option"
 | |
|     PlatformBuildOptions.Options = map(LoadBuildOption, XmlList(XmlFpd, XmlTag))
 | |
| 
 | |
|     PlatformBuildOptions.UserExtensions = LoadPlatformUserExtension(XmlFpd)
 | |
|     
 | |
|     PlatformBuildOptions.FfsKeyList = LoadPlatformFfsDict(XmlFpd)
 | |
|     
 | |
|     return PlatformBuildOptions
 | |
| 
 | |
| ## Load Platform Pcd Data
 | |
| #
 | |
| # Read an input Platform XML DOM object and return Platform module class object
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param    XmlPcd             An XML DOM object read from FPD file
 | |
| #
 | |
| # @retvel   PlatformPcdData    A Platform Pcd object loaded from XmlFpd
 | |
| #
 | |
| def LoadPlatformPcdData(XmlPcdData):
 | |
|     PcdData = PcdClass() # defined in CommonDataClass.CommonClass.py
 | |
| 
 | |
|     XmlTag = "ItemType"
 | |
|     PcdData.ItemType = XmlAttribute(XmlPcdData, XmlTag) #DYNAMIC
 | |
| 
 | |
|     XmlTag = "PcdData/C_Name"
 | |
|     PcdData.C_NAME = XmlElement(XmlPcdData, XmlTag)
 | |
|     
 | |
|     XmlTag = "PcdData/Token"
 | |
|     PcdData.Token = XmlElement(XmlPcdData, XmlTag)
 | |
|     
 | |
|     XmlTag = "PcdData/TokenSpaceGuidCName"
 | |
|     PcdData.TokenSpaceGuidCName = XmlElement(XmlPcdData, XmlTag)
 | |
|     
 | |
|     XmlTag = "PcdData/DatumType"
 | |
|     PcdData.DatumType = XmlElement(XmlPcdData, XmlTag)
 | |
|     
 | |
|     XmlTag = "PcdData/MaxDatumSize"
 | |
|     PcdData.MaxDatumSize = XmlElement(XmlPcdData, XmlTag)
 | |
|     
 | |
|     XmlTag = "PcdData/Value"
 | |
|     PcdData.Value = XmlElement(XmlPcdData, XmlTag)
 | |
|     
 | |
|     return PcdData
 | |
| 
 | |
| ## Load a Platform Pcd Build Data
 | |
| #
 | |
| # Read an input Platform XML DOM object and return a list of Pcd Dynamic
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param    XmlPcdBuildData        An XML DOM object read from FPD file
 | |
| #
 | |
| # @retvel   PcdBuildData           A Platform Pcd Build Data loaded from XmlFpd
 | |
| #
 | |
| def LoadPlatformPcdBuildData(XmlPcdBuildData):
 | |
|     PcdBuildData = PcdClass() # defined in CommonDataClass.CommonClass.py
 | |
| 
 | |
|     XmlTag = "ItemType"
 | |
|     PcdBuildData.ItemType = XmlAttribute(XmlPcdBuildData, XmlTag) #DYNAMIC
 | |
| 
 | |
|     XmlTag = "PcdBuildData/C_Name"
 | |
|     PcdBuildData.C_NAME = XmlElement(XmlPcdBuildData, XmlTag)
 | |
| 
 | |
|     XmlTag = "PcdBuildData/Token"
 | |
|     PcdBuildData.Token = XmlElement(XmlPcdBuildData, XmlTag)
 | |
| 
 | |
|     XmlTag = "PcdBuildData/TokenSpaceGuidCName"
 | |
|     PcdBuildData.TokenSpaceGuidCName = XmlElement(XmlPcdBuildData, XmlTag)
 | |
| 
 | |
|     XmlTag = "PcdBuildData/DatumType"
 | |
|     PcdBuildData.DatumType = XmlElement(XmlPcdBuildData, XmlTag)
 | |
| 
 | |
|     XmlTag = "PcdBuildData/MaxDatumSize"
 | |
|     PcdBuildData.MaxDatumSize = XmlElement(XmlPcdBuildData, XmlTag)
 | |
|     
 | |
|     #XmlTag = "PcdBuildData/Value"
 | |
|     #PcdBuildData.Value = XmlElement(XmlPcdBuildData, XmlTag)
 | |
| 
 | |
|     return PcdBuildData
 | |
| 
 | |
| ## Load a list of Platform Pcd Dynamic
 | |
| #
 | |
| # Read an input Platform XML DOM object and return a list of Pcd Dynamic
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param    XmlFpd             An XML DOM object read from FPD file
 | |
| #
 | |
| # @retvel   PcdDynamic         A list of Pcd Dynamic loaded from XmlFpd
 | |
| #
 | |
| def LoadDynamicPcdBuildDefinitions(XmlFpd):
 | |
|     DynamicPcdBuildDefinitions = []
 | |
|     XmlTag = "PlatformSurfaceArea/DynamicPcdBuildDefinitions/PcdBuildData"
 | |
|     return map(LoadPlatformPcdBuildData, XmlList(XmlFpd, XmlTag))
 | |
| 
 | |
| ## Load a Platform NameValue object
 | |
| #
 | |
| # Read an input Platform XML DOM object and return a list of User Extensions
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlNameValue       An XML DOM object read from FPD file
 | |
| #
 | |
| # @retvel NameValue          A Platform NameValue object
 | |
| #
 | |
| def LoadNameValue(XmlNameValue):
 | |
|     NameValue = []
 | |
|     
 | |
|     XmlTag = "Name"
 | |
|     Name = XmlAttribute(XmlNameValue, XmlTag)
 | |
|     NameValue.append(Name)
 | |
| 
 | |
|     XmlTag = "Value"
 | |
|     Value = XmlAttribute(XmlNameValue, XmlTag)
 | |
|     NameValue.append(Value)
 | |
|     
 | |
|     return NameValue
 | |
| 
 | |
| ## Load a Platform Fv Image Name object
 | |
| #
 | |
| # Read an input Platform XML DOM object and return a platform Fv Image
 | |
| # Name contained in the DOM object.
 | |
| #
 | |
| # @param  XmlFvImageNames       An XML DOM object read from FPD file
 | |
| #
 | |
| # @retvel FvImageNames          A Platform Fv Image Name object
 | |
| #
 | |
| def LoadFvImageNames(XmlFvImageNames):
 | |
|     XmlTag = "FvImageNames"
 | |
|     FvImageNames = XmlElement(XmlFvImageNames, XmlTag)
 | |
|     return FvImageNames
 | |
| 
 | |
| ## Load a Platform Fv Image option object
 | |
| #
 | |
| # Read an input Platform XML DOM object and return a platform Fv Image
 | |
| # Option contained in the DOM object.
 | |
| #
 | |
| # @param  XmlFvImageOptions         An XML DOM object read from FPD file
 | |
| #
 | |
| # @retvel PlatformFvImageOption     A Platform Fv Image Option object
 | |
| #
 | |
| def LoadFvImageOptions(XmlFvImageOptions):
 | |
|     PlatformFvImageOption = PlatformFvImageOptionClass()
 | |
|     
 | |
|     XmlTag = ""
 | |
|     PlatformFvImageOption.FvImageOptionName = ''
 | |
|     
 | |
|     XmlTag = ""
 | |
|     PlatformFvImageOption.FvImageOptionValues = []
 | |
| 
 | |
|     XmlTag = "FvImageOptions/NameValue"
 | |
|     List = map(LoadNameValue, XmlList(XmlFvImageOptions, XmlTag))
 | |
|     
 | |
|     return PlatformFvImageOption
 | |
|     
 | |
| ## Load a Platform Fv Image object
 | |
| #
 | |
| # Read an input Platform XML DOM object and return a list of User Extensions
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlFvImage          An XML DOM object read from Fpd file
 | |
| #
 | |
| # @retvel PlatformFvImage     A Platform Fv Image object
 | |
| #
 | |
| def LoadPlatformFvImage(XmlFvImage):
 | |
|     PlatformFvImage = PlatformFvImageClass()
 | |
| 
 | |
|     XmlTag = "Name"
 | |
|     PlatformFvImage.Name = XmlAttribute(XmlFvImage, XmlTag)
 | |
| 
 | |
|     XmlTag = "Value"
 | |
|     PlatformFvImage.Value = XmlAttribute(XmlFvImage, XmlTag)
 | |
| 
 | |
|     XmlTag = "Type"
 | |
|     PlatformFvImage.Type = XmlAttribute(XmlFvImage, XmlTag)
 | |
| 
 | |
|     XmlTag = "FvImage/FvImageNames"
 | |
|     PlatformFvImage.FvImageNames = map(LoadFvImageNames, XmlList(XmlFvImage, XmlTag))
 | |
| 
 | |
|     XmlTag = "FvImage/FvImageOptions"
 | |
|     PlatformFvImage.FvImageOptions = map(LoadFvImageOptions, XmlList(XmlFvImage, XmlTag))
 | |
|     
 | |
|     return PlatformFvImage
 | |
| 
 | |
| ## Load a Platform fdf object
 | |
| #
 | |
| # Read an input Platform XML DOM object and return a list of User Extensions
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlFvImages          An XML DOM object read from FPD file
 | |
| #
 | |
| # @retvel PlatformFdf          A Platform fdf object
 | |
| #
 | |
| def LoadPlatformFvImages(XmlFvImages):
 | |
|     List = []
 | |
|     
 | |
|     XmlTag = "FvImages/NameValue"
 | |
|     NameValues = map(LoadNameValue, XmlList(XmlFvImages, XmlTag))
 | |
|     List.append(NameValues)
 | |
|     
 | |
|     XmlTag = "FvImages/FvImage"
 | |
|     FvImages = map(LoadPlatformFvImage, XmlList(XmlFvImages, XmlTag))
 | |
|     List.append(FvImages)
 | |
|     
 | |
|     XmlTag = "FvImages/FvImageName"
 | |
|     FvImageNames = map(LoadPlatformFvImageName, XmlList(XmlFvImages, XmlTag))
 | |
|     List.append(FvImageNames)
 | |
|     
 | |
|     return List
 | |
| 
 | |
| ## Load a Platform Fv Image Name object
 | |
| #
 | |
| # Read an input Platform XML DOM object and return a list of User Extensions
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlFvImageName        An XML DOM object read from FPD file
 | |
| #
 | |
| # @retvel PlatformFvImageName   A Platform Fv Image Name object
 | |
| #
 | |
| def LoadPlatformFvImageName(XmlFvImageName):
 | |
|     PlatformFvImageName = PlatformFvImageNameClass()
 | |
| 
 | |
|     XmlTag = "Name"
 | |
|     PlatformFvImageName.Name = XmlAttribute(XmlFvImageName, XmlTag)
 | |
|     
 | |
|     XmlTag = "Type"
 | |
|     PlatformFvImageName.Type = XmlAttribute(XmlFvImageName, XmlTag)
 | |
|     
 | |
|     XmlTag = "FvImageOptions"
 | |
|     PlatformFvImageName.FvImageOptions = map(LoadFvImageOptions, XmlList(XmlFvImageName, XmlTag))
 | |
|     
 | |
|     return PlatformFvImageName
 | |
|     
 | |
| ## Load a list of Platform fdf objects
 | |
| #
 | |
| # Read an input Platform XML DOM object and return a list of User Extensions
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlFpd                An XML DOM object read from FPD file
 | |
| #
 | |
| # @retvel PlatformFdfs          A list of Platform fdf object
 | |
| #
 | |
| def LoadPlatformFdfs(XmlFpd):
 | |
|     PlatformFvImages = PlatformFvImagesClass()
 | |
| 
 | |
|     XmlTag = "PlatformSurfaceArea/Flash/FvImages"
 | |
|     PlatformFvImages.FvImages = map(LoadPlatformFvImages, XmlList(XmlFpd, XmlTag))
 | |
| 
 | |
|     return PlatformFvImages
 | |
| 
 | |
| ## Load a Platform User Extensions
 | |
| #
 | |
| # Read an input Platform XML DOM object and return an User Extension
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlUserExtension             An XML DOM object read from FPD file
 | |
| #
 | |
| # @retvel PlatformUserExtensions       A platform User Extension loaded from XmlFpd
 | |
| #
 | |
| def LoadPlatformUserExtension(XmlFpd):
 | |
|     Dict = {}
 | |
|     
 | |
|     PlatformUserExtensions = UserExtensionsClass()
 | |
| 
 | |
|     XmlTag = "PlatformSurfaceArea/BuildOptions/UserExtensions"
 | |
|     List = map(LoadUserExtensions, XmlList(XmlFpd, XmlTag))
 | |
|     if List != []:
 | |
|         for Item in List:
 | |
|             UserID = Item.UserID
 | |
|             Identifier = Item.Identifier
 | |
|             Dict[(UserID, Identifier)] = Item
 | |
|     #XmlTag = "PlatformSurfaceArea/BuildOptions/UserExtensions/UserID"
 | |
|     #PlatformUserExtensions.UserID = XmlAttribute(XmlFpd, XmlTag)
 | |
|     
 | |
|     #XmlTag = "PlatformSurfaceArea/BuildOptions/UserExtensions/Identifier"
 | |
|     #PlatformUserExtensions.Identifier = XmlAttribute(XmlFpd, XmlTag)
 | |
|     
 | |
|     #PlatformUserExtensions.Content = XmlElementData(XmlFpd)
 | |
|     #Dict[(PlatformUserExtensions.UserID,PlatformUserExtensions.Identifier)] = PlatformUserExtensions
 | |
|     #return PlatformUserExtensions
 | |
|     return Dict
 | |
| 
 | |
| ## Load a list of Platform User Extensions
 | |
| #
 | |
| # Read an input Platform XML DOM object and return a list of User Extensions
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlFpd               An XML DOM object read from FPD file
 | |
| #
 | |
| # @retvel UserExtensions       A list of platform User Extensions loaded from XmlFpd
 | |
| #
 | |
| def LoadPlatformUserExtensions(XmlFpd):
 | |
|     XmlTag = "PlatformSurfaceArea/UserExtensions"
 | |
|     return map(LoadUserExtensions, XmlList(XmlFpd, XmlTag)) # from MigrationUtilities.py LoadUserExtensions
 | |
| 
 | |
| ## Load a new Platform class object
 | |
| #
 | |
| # Read an input FPD File and return a new Platform class Object.
 | |
| #
 | |
| # @param   FpdFileName              An XML DOM object read from FPD file
 | |
| #
 | |
| # @retvel  Platform                 A new Platform class object loaded from FPD File
 | |
| #
 | |
| def LoadFpd(FpdFileName):
 | |
|     XmlFpd = XmlParseFile(FpdFileName)
 | |
|     EdkLogger.verbose("Load FPD File: %s" % FpdFileName)
 | |
|     
 | |
|     Platform = PlatformClass()
 | |
|     Platform.Header = LoadPlatformHeader(XmlFpd, FpdFileName)
 | |
|     Platform.SkuInfos = LoadPlatformSkuInfos(XmlFpd)
 | |
|     Platform.Libraries = [] #New in dsc spec, do not handle for now
 | |
|     Platform.LibraryClasses = LoadPlatformLibraryClasses(XmlFpd)
 | |
|     Platform.Modules = LoadPlatformModules(XmlFpd)
 | |
|     Platform.FlashDefinitionFile = LoadPlatformFlashDefinitionFile(XmlFpd, FpdFileName)
 | |
|     Platform.BuildOptions = LoadPlatformBuildOptions(XmlFpd)
 | |
|     Platform.DynamicPcdBuildDefinitions = LoadDynamicPcdBuildDefinitions(XmlFpd)
 | |
|     Platform.Fdf = LoadPlatformFdfs(XmlFpd)
 | |
|     Platform.UserExtensions = LoadPlatformUserExtensions(XmlFpd)
 | |
| 
 | |
|     return Platform
 | |
| 
 | |
| # This acts like the main() function for the script, unless it is 'import'ed
 | |
| # into another script.
 | |
| if __name__ == '__main__':
 | |
|     pass |