summaryrefslogtreecommitdiff
path: root/BaseTools/Source/Python/fpd2dsc/LoadFpd.py
diff options
context:
space:
mode:
Diffstat (limited to 'BaseTools/Source/Python/fpd2dsc/LoadFpd.py')
-rw-r--r--BaseTools/Source/Python/fpd2dsc/LoadFpd.py1039
1 files changed, 0 insertions, 1039 deletions
diff --git a/BaseTools/Source/Python/fpd2dsc/LoadFpd.py b/BaseTools/Source/Python/fpd2dsc/LoadFpd.py
deleted file mode 100644
index fe271ac85b..0000000000
--- a/BaseTools/Source/Python/fpd2dsc/LoadFpd.py
+++ /dev/null
@@ -1,1039 +0,0 @@
-## @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 \ No newline at end of file