summaryrefslogtreecommitdiff
path: root/BaseTools/Source/Python/AutoGen/DataPipe.py
diff options
context:
space:
mode:
Diffstat (limited to 'BaseTools/Source/Python/AutoGen/DataPipe.py')
-rwxr-xr-xBaseTools/Source/Python/AutoGen/DataPipe.py346
1 files changed, 173 insertions, 173 deletions
diff --git a/BaseTools/Source/Python/AutoGen/DataPipe.py b/BaseTools/Source/Python/AutoGen/DataPipe.py
index 848c7a8296..25c48390fa 100755
--- a/BaseTools/Source/Python/AutoGen/DataPipe.py
+++ b/BaseTools/Source/Python/AutoGen/DataPipe.py
@@ -1,173 +1,173 @@
-## @file
-# Create makefile for MS nmake and GNU make
-#
-# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-from __future__ import absolute_import
-from Workspace.WorkspaceDatabase import BuildDB
-from Workspace.WorkspaceCommon import GetModuleLibInstances
-import Common.GlobalData as GlobalData
-import os
-import pickle
-from pickle import HIGHEST_PROTOCOL
-from Common import EdkLogger
-
-class PCD_DATA():
- def __init__(self,TokenCName,TokenSpaceGuidCName,Type,DatumType,SkuInfoList,DefaultValue,
- MaxDatumSize,UserDefinedDefaultStoresFlag,validateranges,
- validlists,expressions,CustomAttribute,TokenValue):
- self.TokenCName = TokenCName
- self.TokenSpaceGuidCName = TokenSpaceGuidCName
- self.Type = Type
- self.DatumType = DatumType
- self.SkuInfoList = SkuInfoList
- self.DefaultValue = DefaultValue
- self.MaxDatumSize = MaxDatumSize
- self.UserDefinedDefaultStoresFlag = UserDefinedDefaultStoresFlag
- self.validateranges = validateranges
- self.validlists = validlists
- self.expressions = expressions
- self.CustomAttribute = CustomAttribute
- self.TokenValue = TokenValue
-
-class DataPipe(object):
- def __init__(self, BuildDir=None):
- self.data_container = {}
- self.BuildDir = BuildDir
- self.dump_file = ""
-
-class MemoryDataPipe(DataPipe):
-
- def Get(self,key):
- return self.data_container.get(key)
-
- def dump(self,file_path):
- self.dump_file = file_path
- with open(file_path,'wb') as fd:
- pickle.dump(self.data_container,fd,pickle.HIGHEST_PROTOCOL)
-
- def load(self,file_path):
- with open(file_path,'rb') as fd:
- self.data_container = pickle.load(fd)
-
- @property
- def DataContainer(self):
- return self.data_container
- @DataContainer.setter
- def DataContainer(self,data):
- self.data_container.update(data)
-
- def FillData(self,PlatformInfo):
- #Platform Pcds
- self.DataContainer = {
- "PLA_PCD" : [PCD_DATA(
- pcd.TokenCName,pcd.TokenSpaceGuidCName,pcd.Type,
- pcd.DatumType,pcd.SkuInfoList,pcd.DefaultValue,
- pcd.MaxDatumSize,pcd.UserDefinedDefaultStoresFlag,pcd.validateranges,
- pcd.validlists,pcd.expressions,pcd.CustomAttribute,pcd.TokenValue)
- for pcd in PlatformInfo.Platform.Pcds.values()]
- }
-
- #Platform Module Pcds
- ModulePcds = {}
- for m in PlatformInfo.Platform.Modules:
- module = PlatformInfo.Platform.Modules[m]
- m_pcds = module.Pcds
- if m_pcds:
- ModulePcds[module.Guid] = [PCD_DATA(
- pcd.TokenCName,pcd.TokenSpaceGuidCName,pcd.Type,
- pcd.DatumType,pcd.SkuInfoList,pcd.DefaultValue,
- pcd.MaxDatumSize,pcd.UserDefinedDefaultStoresFlag,pcd.validateranges,
- pcd.validlists,pcd.expressions,pcd.CustomAttribute,pcd.TokenValue)
- for pcd in PlatformInfo.Platform.Modules[m].Pcds.values()]
-
-
- self.DataContainer = {"MOL_PCDS":ModulePcds}
-
- #Module's Library Instance
- ModuleLibs = {}
- libModules = {}
- for m in PlatformInfo.Platform.Modules:
- module_obj = BuildDB.BuildObject[m,PlatformInfo.Arch,PlatformInfo.BuildTarget,PlatformInfo.ToolChain]
- Libs = GetModuleLibInstances(module_obj, PlatformInfo.Platform, BuildDB.BuildObject, PlatformInfo.Arch,PlatformInfo.BuildTarget,PlatformInfo.ToolChain,PlatformInfo.MetaFile,EdkLogger)
- for lib in Libs:
- try:
- libModules[(lib.MetaFile.File,lib.MetaFile.Root,lib.Arch,lib.MetaFile.Path)].append((m.File,m.Root,module_obj.Arch,m.Path))
- except:
- libModules[(lib.MetaFile.File,lib.MetaFile.Root,lib.Arch,lib.MetaFile.Path)] = [(m.File,m.Root,module_obj.Arch,m.Path)]
- ModuleLibs[(m.File,m.Root,module_obj.Arch,m.Path)] = [(l.MetaFile.File,l.MetaFile.Root,l.Arch,l.MetaFile.Path) for l in Libs]
- self.DataContainer = {"DEPS":ModuleLibs}
- self.DataContainer = {"REFS":libModules}
-
- #Platform BuildOptions
-
- platform_build_opt = PlatformInfo.EdkIIBuildOption
-
- ToolDefinition = PlatformInfo.ToolDefinition
- module_build_opt = {}
- for m in PlatformInfo.Platform.Modules:
- ModuleTypeOptions, PlatformModuleOptions = PlatformInfo.GetGlobalBuildOptions(BuildDB.BuildObject[m,PlatformInfo.Arch,PlatformInfo.BuildTarget,PlatformInfo.ToolChain])
- if ModuleTypeOptions or PlatformModuleOptions:
- module_build_opt.update({(m.File,m.Root): {"ModuleTypeOptions":ModuleTypeOptions, "PlatformModuleOptions":PlatformModuleOptions}})
-
- self.DataContainer = {"PLA_BO":platform_build_opt,
- "TOOLDEF":ToolDefinition,
- "MOL_BO":module_build_opt
- }
-
-
-
- #Platform Info
- PInfo = {
- "WorkspaceDir":PlatformInfo.Workspace.WorkspaceDir,
- "Target":PlatformInfo.BuildTarget,
- "ToolChain":PlatformInfo.Workspace.ToolChain,
- "BuildRuleFile":PlatformInfo.BuildRule,
- "Arch": PlatformInfo.Arch,
- "ArchList":PlatformInfo.Workspace.ArchList,
- "ActivePlatform":PlatformInfo.MetaFile
- }
- self.DataContainer = {'P_Info':PInfo}
-
- self.DataContainer = {'M_Name':PlatformInfo.UniqueBaseName}
-
- self.DataContainer = {"ToolChainFamily": PlatformInfo.ToolChainFamily}
-
- self.DataContainer = {"BuildRuleFamily": PlatformInfo.BuildRuleFamily}
-
- self.DataContainer = {"MixedPcd":GlobalData.MixedPcd}
-
- self.DataContainer = {"BuildOptPcd":GlobalData.BuildOptionPcd}
-
- self.DataContainer = {"BuildCommand": PlatformInfo.BuildCommand}
-
- self.DataContainer = {"AsBuildModuleList": PlatformInfo._AsBuildModuleList}
-
- self.DataContainer = {"G_defines": GlobalData.gGlobalDefines}
-
- self.DataContainer = {"CL_defines": GlobalData.gCommandLineDefines}
-
- self.DataContainer = {"gCommandMaxLength": GlobalData.gCommandMaxLength}
-
- self.DataContainer = {"Env_Var": {k:v for k, v in os.environ.items()}}
-
- self.DataContainer = {"PackageList": [(dec.MetaFile,dec.Arch) for dec in PlatformInfo.PackageList]}
-
- self.DataContainer = {"GuidDict": PlatformInfo.Platform._GuidDict}
-
- self.DataContainer = {"DatabasePath":GlobalData.gDatabasePath}
-
- self.DataContainer = {"FdfParser": True if GlobalData.gFdfParser else False}
-
- self.DataContainer = {"LogLevel": EdkLogger.GetLevel()}
-
- self.DataContainer = {"UseHashCache":GlobalData.gUseHashCache}
-
- self.DataContainer = {"BinCacheSource":GlobalData.gBinCacheSource}
-
- self.DataContainer = {"BinCacheDest":GlobalData.gBinCacheDest}
-
- self.DataContainer = {"EnableGenfdsMultiThread":GlobalData.gEnableGenfdsMultiThread}
-
- self.DataContainer = {"gPlatformFinalPcds":GlobalData.gPlatformFinalPcds}
+## @file
+# Create makefile for MS nmake and GNU make
+#
+# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+from __future__ import absolute_import
+from Workspace.WorkspaceDatabase import BuildDB
+from Workspace.WorkspaceCommon import GetModuleLibInstances
+import Common.GlobalData as GlobalData
+import os
+import pickle
+from pickle import HIGHEST_PROTOCOL
+from Common import EdkLogger
+
+class PCD_DATA():
+ def __init__(self,TokenCName,TokenSpaceGuidCName,Type,DatumType,SkuInfoList,DefaultValue,
+ MaxDatumSize,UserDefinedDefaultStoresFlag,validateranges,
+ validlists,expressions,CustomAttribute,TokenValue):
+ self.TokenCName = TokenCName
+ self.TokenSpaceGuidCName = TokenSpaceGuidCName
+ self.Type = Type
+ self.DatumType = DatumType
+ self.SkuInfoList = SkuInfoList
+ self.DefaultValue = DefaultValue
+ self.MaxDatumSize = MaxDatumSize
+ self.UserDefinedDefaultStoresFlag = UserDefinedDefaultStoresFlag
+ self.validateranges = validateranges
+ self.validlists = validlists
+ self.expressions = expressions
+ self.CustomAttribute = CustomAttribute
+ self.TokenValue = TokenValue
+
+class DataPipe(object):
+ def __init__(self, BuildDir=None):
+ self.data_container = {}
+ self.BuildDir = BuildDir
+ self.dump_file = ""
+
+class MemoryDataPipe(DataPipe):
+
+ def Get(self,key):
+ return self.data_container.get(key)
+
+ def dump(self,file_path):
+ self.dump_file = file_path
+ with open(file_path,'wb') as fd:
+ pickle.dump(self.data_container,fd,pickle.HIGHEST_PROTOCOL)
+
+ def load(self,file_path):
+ with open(file_path,'rb') as fd:
+ self.data_container = pickle.load(fd)
+
+ @property
+ def DataContainer(self):
+ return self.data_container
+ @DataContainer.setter
+ def DataContainer(self,data):
+ self.data_container.update(data)
+
+ def FillData(self,PlatformInfo):
+ #Platform Pcds
+ self.DataContainer = {
+ "PLA_PCD" : [PCD_DATA(
+ pcd.TokenCName,pcd.TokenSpaceGuidCName,pcd.Type,
+ pcd.DatumType,pcd.SkuInfoList,pcd.DefaultValue,
+ pcd.MaxDatumSize,pcd.UserDefinedDefaultStoresFlag,pcd.validateranges,
+ pcd.validlists,pcd.expressions,pcd.CustomAttribute,pcd.TokenValue)
+ for pcd in PlatformInfo.Platform.Pcds.values()]
+ }
+
+ #Platform Module Pcds
+ ModulePcds = {}
+ for m in PlatformInfo.Platform.Modules:
+ module = PlatformInfo.Platform.Modules[m]
+ m_pcds = module.Pcds
+ if m_pcds:
+ ModulePcds[module.Guid] = [PCD_DATA(
+ pcd.TokenCName,pcd.TokenSpaceGuidCName,pcd.Type,
+ pcd.DatumType,pcd.SkuInfoList,pcd.DefaultValue,
+ pcd.MaxDatumSize,pcd.UserDefinedDefaultStoresFlag,pcd.validateranges,
+ pcd.validlists,pcd.expressions,pcd.CustomAttribute,pcd.TokenValue)
+ for pcd in PlatformInfo.Platform.Modules[m].Pcds.values()]
+
+
+ self.DataContainer = {"MOL_PCDS":ModulePcds}
+
+ #Module's Library Instance
+ ModuleLibs = {}
+ libModules = {}
+ for m in PlatformInfo.Platform.Modules:
+ module_obj = BuildDB.BuildObject[m,PlatformInfo.Arch,PlatformInfo.BuildTarget,PlatformInfo.ToolChain]
+ Libs = GetModuleLibInstances(module_obj, PlatformInfo.Platform, BuildDB.BuildObject, PlatformInfo.Arch,PlatformInfo.BuildTarget,PlatformInfo.ToolChain,PlatformInfo.MetaFile,EdkLogger)
+ for lib in Libs:
+ try:
+ libModules[(lib.MetaFile.File,lib.MetaFile.Root,lib.Arch,lib.MetaFile.Path)].append((m.File,m.Root,module_obj.Arch,m.Path))
+ except:
+ libModules[(lib.MetaFile.File,lib.MetaFile.Root,lib.Arch,lib.MetaFile.Path)] = [(m.File,m.Root,module_obj.Arch,m.Path)]
+ ModuleLibs[(m.File,m.Root,module_obj.Arch,m.Path)] = [(l.MetaFile.File,l.MetaFile.Root,l.Arch,l.MetaFile.Path) for l in Libs]
+ self.DataContainer = {"DEPS":ModuleLibs}
+ self.DataContainer = {"REFS":libModules}
+
+ #Platform BuildOptions
+
+ platform_build_opt = PlatformInfo.EdkIIBuildOption
+
+ ToolDefinition = PlatformInfo.ToolDefinition
+ module_build_opt = {}
+ for m in PlatformInfo.Platform.Modules:
+ ModuleTypeOptions, PlatformModuleOptions = PlatformInfo.GetGlobalBuildOptions(BuildDB.BuildObject[m,PlatformInfo.Arch,PlatformInfo.BuildTarget,PlatformInfo.ToolChain])
+ if ModuleTypeOptions or PlatformModuleOptions:
+ module_build_opt.update({(m.File,m.Root): {"ModuleTypeOptions":ModuleTypeOptions, "PlatformModuleOptions":PlatformModuleOptions}})
+
+ self.DataContainer = {"PLA_BO":platform_build_opt,
+ "TOOLDEF":ToolDefinition,
+ "MOL_BO":module_build_opt
+ }
+
+
+
+ #Platform Info
+ PInfo = {
+ "WorkspaceDir":PlatformInfo.Workspace.WorkspaceDir,
+ "Target":PlatformInfo.BuildTarget,
+ "ToolChain":PlatformInfo.Workspace.ToolChain,
+ "BuildRuleFile":PlatformInfo.BuildRule,
+ "Arch": PlatformInfo.Arch,
+ "ArchList":PlatformInfo.Workspace.ArchList,
+ "ActivePlatform":PlatformInfo.MetaFile
+ }
+ self.DataContainer = {'P_Info':PInfo}
+
+ self.DataContainer = {'M_Name':PlatformInfo.UniqueBaseName}
+
+ self.DataContainer = {"ToolChainFamily": PlatformInfo.ToolChainFamily}
+
+ self.DataContainer = {"BuildRuleFamily": PlatformInfo.BuildRuleFamily}
+
+ self.DataContainer = {"MixedPcd":GlobalData.MixedPcd}
+
+ self.DataContainer = {"BuildOptPcd":GlobalData.BuildOptionPcd}
+
+ self.DataContainer = {"BuildCommand": PlatformInfo.BuildCommand}
+
+ self.DataContainer = {"AsBuildModuleList": PlatformInfo._AsBuildModuleList}
+
+ self.DataContainer = {"G_defines": GlobalData.gGlobalDefines}
+
+ self.DataContainer = {"CL_defines": GlobalData.gCommandLineDefines}
+
+ self.DataContainer = {"gCommandMaxLength": GlobalData.gCommandMaxLength}
+
+ self.DataContainer = {"Env_Var": {k:v for k, v in os.environ.items()}}
+
+ self.DataContainer = {"PackageList": [(dec.MetaFile,dec.Arch) for dec in PlatformInfo.PackageList]}
+
+ self.DataContainer = {"GuidDict": PlatformInfo.Platform._GuidDict}
+
+ self.DataContainer = {"DatabasePath":GlobalData.gDatabasePath}
+
+ self.DataContainer = {"FdfParser": True if GlobalData.gFdfParser else False}
+
+ self.DataContainer = {"LogLevel": EdkLogger.GetLevel()}
+
+ self.DataContainer = {"UseHashCache":GlobalData.gUseHashCache}
+
+ self.DataContainer = {"BinCacheSource":GlobalData.gBinCacheSource}
+
+ self.DataContainer = {"BinCacheDest":GlobalData.gBinCacheDest}
+
+ self.DataContainer = {"EnableGenfdsMultiThread":GlobalData.gEnableGenfdsMultiThread}
+
+ self.DataContainer = {"gPlatformFinalPcds":GlobalData.gPlatformFinalPcds}