libModules = {}\r
for m in PlatformInfo.Platform.Modules:\r
module_obj = BuildDB.BuildObject[m,PlatformInfo.Arch,PlatformInfo.BuildTarget,PlatformInfo.ToolChain]\r
- Libs = GetModuleLibInstances(module_obj, PlatformInfo.Platform, BuildDB.BuildObject, PlatformInfo.Arch,PlatformInfo.BuildTarget,PlatformInfo.ToolChain)\r
+ Libs = GetModuleLibInstances(module_obj, PlatformInfo.Platform, BuildDB.BuildObject, PlatformInfo.Arch,PlatformInfo.BuildTarget,PlatformInfo.ToolChain,PlatformInfo.MetaFile,EdkLogger)\r
for lib in Libs:\r
try:\r
libModules[(lib.MetaFile.File,lib.MetaFile.Root,lib.Arch,lib.MetaFile.Path)].append((m.File,m.Root,module_obj.Arch,m.Path))\r
for m in self.Platform.Modules:\r
module_obj = self.BuildDatabase[m,self.Arch,self.BuildTarget,self.ToolChain]\r
if not bool(module_obj.LibraryClass):\r
- Libs = GetModuleLibInstances(module_obj, self.Platform, self.BuildDatabase, self.Arch,self.BuildTarget,self.ToolChain)\r
+ Libs = GetModuleLibInstances(module_obj, self.Platform, self.BuildDatabase, self.Arch,self.BuildTarget,self.ToolChain,self.MetaFile,EdkLogger)\r
else:\r
Libs = []\r
ModuleLibs.update( set([(l.MetaFile.File,l.MetaFile.Root,l.MetaFile.Path,l.MetaFile.BaseName,l.MetaFile.OriginalPath,l.Arch,True) for l in Libs]))\r
from Common.BuildToolError import RESOURCE_NOT_AVAILABLE\r
from Common.BuildToolError import OPTION_MISSING\r
from Common.BuildToolError import BUILD_ERROR\r
+import Common.EdkLogger as EdkLogger\r
\r
class OrderedListDict(OrderedDict):\r
def __init__(self, *args, **kwargs):\r
# @retval: List of dependent libraries which are InfBuildData instances\r
#\r
def GetLiabraryInstances(Module, Platform, BuildDatabase, Arch, Target, Toolchain):\r
- return GetModuleLibInstances(Module, Platform, BuildDatabase, Arch, Target, Toolchain)\r
+ return GetModuleLibInstances(Module, Platform, BuildDatabase, Arch, Target, Toolchain,Platform.MetaFile,EdkLogger)\r
\r
def GetModuleLibInstances(Module, Platform, BuildDatabase, Arch, Target, Toolchain, FileName = '', EdkLogger = None):\r
if Module.LibInstances:\r
ConsumedByList = OrderedListDict()\r
LibraryInstance = OrderedDict()\r
\r
- if FileName:\r
+ if not Module.LibraryClass:\r
EdkLogger.verbose("")\r
EdkLogger.verbose("Library instances of module [%s] [%s]:" % (str(Module), Arch))\r
\r
if LibraryPath is None:\r
LibraryPath = M.LibraryClasses.get(LibraryClassName)\r
if LibraryPath is None:\r
- if FileName:\r
+ if not Module.LibraryClass:\r
EdkLogger.error("build", RESOURCE_NOT_AVAILABLE,\r
"Instance of library class [%s] is not found" % LibraryClassName,\r
File=FileName,\r
or (ModuleType != SUP_MODULE_USER_DEFINED and ModuleType != SUP_MODULE_HOST_APPLICATION\r
and ModuleType not in LibraryModule.LibraryClass[0].SupModList):\r
# only USER_DEFINED can link against any library instance despite of its SupModList\r
- if FileName:\r
+ if not Module.LibraryClass:\r
EdkLogger.error("build", OPTION_MISSING,\r
"Module type [%s] is not supported by library instance [%s]" \\r
% (ModuleType, LibraryPath), File=FileName,\r
\r
LibraryInstance[LibraryClassName] = LibraryModule\r
LibraryConsumerList.append(LibraryModule)\r
- if FileName:\r
+ if not Module.LibraryClass:\r
EdkLogger.verbose("\t" + str(LibraryClassName) + " : " + str(LibraryModule))\r
else:\r
LibraryModule = LibraryInstance[LibraryClassName]\r
#\r
for Item in LibraryList:\r
if ConsumedByList[Item] and Item in Constructor and len(Constructor) > 1:\r
- if FileName:\r
+ if not Module.LibraryClass:\r
ErrorMessage = "\tconsumed by " + "\n\tconsumed by ".join(str(L) for L in ConsumedByList[Item])\r
EdkLogger.error("build", BUILD_ERROR, 'Library [%s] with constructors has a cycle' % str(Item),\r
ExtraData=ErrorMessage, File=FileName)\r