from DscClassObject import *\r
from String import *\r
from ClassObjects.CommonClassObject import *\r
+from FdfParser import *\r
from BuildToolError import *\r
+from Region import *\r
\r
class ModuleSourceFilesClassObject(object):\r
def __init__(self, SourceFile = '', PcdFeatureFlag = '', TagName = '', ToolCode = '', ToolChainFamily = '', String = ''):\r
for index in range(len(dscObj.Contents[key].LibraryClasses)):\r
self.AddToInfDatabase(dscObj.Contents[key].LibraryClasses[index][0].split(DataType.TAB_VALUE_SPLIT, 1)[1])\r
for index in range(len(dscObj.Contents[key].Components)):\r
- self.AddToInfDatabase(dscObj.Contents[key].Components[index][0])\r
- if len(dscObj.Contents[key].Components[index][1]) > 0:\r
- LibList = dscObj.Contents[key].Components[index][1]\r
- for indexOfLib in range(len(LibList)):\r
- Lib = LibList[indexOfLib]\r
- if len(Lib.split(DataType.TAB_VALUE_SPLIT)) == 2:\r
- self.AddToInfDatabase(CleanString(Lib.split(DataType.TAB_VALUE_SPLIT)[1]))\r
+ Module = dscObj.Contents[key].Components[index][0]\r
+ LibList = dscObj.Contents[key].Components[index][1]\r
+ self.AddToInfDatabase(Module)\r
+ for indexOfLib in range(len(LibList)):\r
+ Lib = LibList[indexOfLib]\r
+ if len(Lib.split(DataType.TAB_VALUE_SPLIT)) == 2:\r
+ self.AddToInfDatabase(CleanString(Lib.split(DataType.TAB_VALUE_SPLIT)[1]))\r
+ self.UpdateInfDatabase(Module, CleanString(Lib.split(DataType.TAB_VALUE_SPLIT)[0]), key)\r
#End For of Dsc\r
\r
#parse module to get package\r
\r
#End of self.Init\r
\r
+ def UpdateInfDatabase(self, infFileName, LibraryClass, Arch):\r
+ infFileName = NormPath(infFileName)\r
+ LibList = self.InfDatabase[infFileName].Contents[Arch].LibraryClasses\r
+ NotFound = True\r
+ for Item in LibList:\r
+ LibName = Item.split(DataType.TAB_VALUE_SPLIT)[0].strip()\r
+ if LibName == LibraryClass:\r
+ return\r
+ \r
+ if NotFound:\r
+ self.InfDatabase[infFileName].Contents[Arch].LibraryClasses.extend([LibraryClass])\r
+ \r
def AddToInfDatabase(self, infFileName):\r
infFileName = NormPath(infFileName)\r
file = self.Workspace.WorkspaceFile(infFileName)\r
#Search each library class\r
LibList = dscObj.Contents[arch].Components[index][1]\r
for indexOfLib in range(len(LibList)):\r
- if LibList[indexOfLib].split(DataType.TAB_VALUE_SPLIT)[0] == lib:\r
- return LibList[indexOfLib].split(DataType.TAB_VALUE_SPLIT)[1]\r
+ if LibList[indexOfLib].split(DataType.TAB_VALUE_SPLIT)[0].strip() == lib:\r
+ return LibList[indexOfLib].split(DataType.TAB_VALUE_SPLIT)[1].strip()\r
\r
#Second find if exist in <LibraryClass> of <LibraryClasses> from dsc file \r
if (lib, moduleType) in self.Build[arch].PlatformDatabase[dsc].LibraryClasses:\r
break\r
\r
return PcdClassObject(CName, GuidCName, Type, DatumType, DefaultValue, TokenValue, MaxDatumSize, SkuInfoList)\r
- \r
+ \r
+ def ReloadPcd(self, FvDict):\r
+ pass\r
\r
# This acts like the main() function for the script, unless it is 'import'ed into another\r
# script.\r