\r
${depexsection_item}\r
\r
+${userextension_tianocore_item}\r
+\r
${tail_comments}\r
\r
[BuildOptions.${module_arch}]\r
self._DepexExpressionList[ModuleType] = DepexExpressionList\r
return self._DepexExpressionList\r
\r
+ # Get the tiano core user extension, it is contain dependent library.\r
+ # @retval: a list contain tiano core userextension.\r
+ #\r
+ def _GetTianoCoreUserExtensionList(self):\r
+ TianoCoreUserExtentionList = []\r
+ for M in [self.Module] + self.DependentLibraryList:\r
+ Filename = M.MetaFile.Path\r
+ InfObj = InfSectionParser.InfSectionParser(Filename)\r
+ TianoCoreUserExtenList = InfObj.GetUserExtensionTianoCore()\r
+ for TianoCoreUserExtent in TianoCoreUserExtenList:\r
+ for Section in TianoCoreUserExtent.keys():\r
+ ItemList = Section.split(TAB_SPLIT)\r
+ Arch = self.Arch\r
+ if len(ItemList) == 4:\r
+ Arch = ItemList[3]\r
+ if Arch.upper() == TAB_ARCH_COMMON or Arch.upper() == self.Arch.upper():\r
+ TianoCoreList = []\r
+ TianoCoreList.extend([TAB_SECTION_START + Section + TAB_SECTION_END])\r
+ TianoCoreList.extend(TianoCoreUserExtent[Section][:])\r
+ TianoCoreList.append('\n')\r
+ TianoCoreUserExtentionList.append(TianoCoreList)\r
+\r
+ return TianoCoreUserExtentionList\r
+\r
## Return the list of specification version required for the module\r
#\r
# @retval list The list of specification defined in module file\r
for Library in self.LibraryAutoGenList:\r
AsBuiltInfDict['libraryclasses_item'] += [Library.MetaFile.File.replace('\\', '/')]\r
\r
+ # Generated UserExtensions TianoCore section.\r
+ # All tianocore user extensions are copied.\r
+ UserExtStr = ''\r
+ for TianoCore in self._GetTianoCoreUserExtensionList():\r
+ UserExtStr += '\n'.join(TianoCore)\r
+ ExtensionFile = os.path.join(self.MetaFile.Dir, TianoCore[1])\r
+ if os.path.isfile(ExtensionFile):\r
+ shutil.copy2(ExtensionFile, self.OutputDir)\r
+ AsBuiltInfDict['userextension_tianocore_item'] = UserExtStr\r
+\r
# Generated depex expression section in comments.\r
AsBuiltInfDict['depexsection_item'] = ''\r
DepexExpresion = self._GetDepexExpresionString()\r
SectionData = []\r
SectionLine = ''\r
\r
+ # Get user extension TianoCore data\r
+ #\r
+ # @return: a list include some dictionary that key is section and value is a list contain all data.\r
+ def GetUserExtensionTianoCore(self):\r
+ UserExtensionTianoCore = []\r
+ if not self._FileSectionDataList:\r
+ return UserExtensionTianoCore\r
+ for SectionDataDict in self._FileSectionDataList:\r
+ for key in SectionDataDict.keys():\r
+ if key.lower().startswith("[userextensions") and key.lower().find('.tianocore.') > -1:\r
+ SectionLine = key.lstrip(TAB_SECTION_START).rstrip(TAB_SECTION_END)\r
+ SubSectionList = [SectionLine]\r
+ if str(SectionLine).find(TAB_COMMA_SPLIT) > -1:\r
+ SubSectionList = str(SectionLine).split(TAB_COMMA_SPLIT)\r
+ for SubSection in SubSectionList:\r
+ if SubSection.lower().find('.tianocore.') > -1:\r
+ UserExtensionTianoCore.append({SubSection: SectionDataDict[key]})\r
+ return UserExtensionTianoCore\r
\r
# Get depex expresion\r
#\r