@cached_property\r
def _Macros(self):\r
RetVal = {}\r
- # EDK_GLOBAL defined macros can be applied to EDK module\r
- if self.AutoGenVersion < 0x00010005:\r
- RetVal.update(GlobalData.gEdkGlobal)\r
- RetVal.update(GlobalData.gGlobalDefines)\r
return RetVal\r
\r
## Get architecture\r
#\r
# Retrieve information in sections specific to Edk.x modules\r
#\r
- if self.AutoGenVersion >= 0x00010005:\r
- if not self._ModuleType:\r
- EdkLogger.error("build", ATTRIBUTE_NOT_AVAILABLE,\r
- "MODULE_TYPE is not given", File=self.MetaFile)\r
- if self._ModuleType not in SUP_MODULE_LIST:\r
- RecordList = self._RawData[MODEL_META_DATA_HEADER, self._Arch, self._Platform]\r
- for Record in RecordList:\r
- Name = Record[1]\r
- if Name == "MODULE_TYPE":\r
- LineNo = Record[6]\r
- break\r
- EdkLogger.error("build", FORMAT_NOT_SUPPORTED,\r
- "MODULE_TYPE %s is not supported for EDK II, valid values are:\n %s" % (self._ModuleType, ' '.join(l for l in SUP_MODULE_LIST)),\r
- File=self.MetaFile, Line=LineNo)\r
- if (self._Specification is None) or (not 'PI_SPECIFICATION_VERSION' in self._Specification) or (int(self._Specification['PI_SPECIFICATION_VERSION'], 16) < 0x0001000A):\r
- if self._ModuleType == SUP_MODULE_SMM_CORE:\r
- EdkLogger.error("build", FORMAT_NOT_SUPPORTED, "SMM_CORE module type can't be used in the module with PI_SPECIFICATION_VERSION less than 0x0001000A", File=self.MetaFile)\r
- if (self._Specification is None) or (not 'PI_SPECIFICATION_VERSION' in self._Specification) or (int(self._Specification['PI_SPECIFICATION_VERSION'], 16) < 0x00010032):\r
- if self._ModuleType == SUP_MODULE_MM_CORE_STANDALONE:\r
- EdkLogger.error("build", FORMAT_NOT_SUPPORTED, "MM_CORE_STANDALONE module type can't be used in the module with PI_SPECIFICATION_VERSION less than 0x00010032", File=self.MetaFile)\r
- if self._ModuleType == SUP_MODULE_MM_STANDALONE:\r
- EdkLogger.error("build", FORMAT_NOT_SUPPORTED, "MM_STANDALONE module type can't be used in the module with PI_SPECIFICATION_VERSION less than 0x00010032", File=self.MetaFile)\r
- if 'PCI_DEVICE_ID' in self._Defs and 'PCI_VENDOR_ID' in self._Defs \\r
- and 'PCI_CLASS_CODE' in self._Defs and 'PCI_REVISION' in self._Defs:\r
- self._BuildType = 'UEFI_OPTIONROM'\r
- if 'PCI_COMPRESS' in self._Defs:\r
- if self._Defs['PCI_COMPRESS'] not in ('TRUE', 'FALSE'):\r
- EdkLogger.error("build", FORMAT_INVALID, "Expected TRUE/FALSE for PCI_COMPRESS: %s" % self.MetaFile)\r
-\r
- elif 'UEFI_HII_RESOURCE_SECTION' in self._Defs \\r
- and self._Defs['UEFI_HII_RESOURCE_SECTION'] == 'TRUE':\r
- self._BuildType = 'UEFI_HII'\r
- else:\r
- self._BuildType = self._ModuleType.upper()\r
-\r
- if self._DxsFile:\r
- File = PathClass(NormPath(self._DxsFile), self._ModuleDir, Arch=self._Arch)\r
- # check the file validation\r
- ErrorCode, ErrorInfo = File.Validate(".dxs", CaseSensitive=False)\r
- if ErrorCode != 0:\r
- EdkLogger.error('build', ErrorCode, ExtraData=ErrorInfo,\r
- File=self.MetaFile, Line=LineNo)\r
- if not self._DependencyFileList:\r
- self._DependencyFileList = []\r
- self._DependencyFileList.append(File)\r
+ if not self._ModuleType:\r
+ EdkLogger.error("build", ATTRIBUTE_NOT_AVAILABLE,\r
+ "MODULE_TYPE is not given", File=self.MetaFile)\r
+ if self._ModuleType not in SUP_MODULE_LIST:\r
+ RecordList = self._RawData[MODEL_META_DATA_HEADER, self._Arch, self._Platform]\r
+ for Record in RecordList:\r
+ Name = Record[1]\r
+ if Name == "MODULE_TYPE":\r
+ LineNo = Record[6]\r
+ break\r
+ EdkLogger.error("build", FORMAT_NOT_SUPPORTED,\r
+ "MODULE_TYPE %s is not supported for EDK II, valid values are:\n %s" % (self._ModuleType, ' '.join(l for l in SUP_MODULE_LIST)),\r
+ File=self.MetaFile, Line=LineNo)\r
+ if (self._Specification is None) or (not 'PI_SPECIFICATION_VERSION' in self._Specification) or (int(self._Specification['PI_SPECIFICATION_VERSION'], 16) < 0x0001000A):\r
+ if self._ModuleType == SUP_MODULE_SMM_CORE:\r
+ EdkLogger.error("build", FORMAT_NOT_SUPPORTED, "SMM_CORE module type can't be used in the module with PI_SPECIFICATION_VERSION less than 0x0001000A", File=self.MetaFile)\r
+ if (self._Specification is None) or (not 'PI_SPECIFICATION_VERSION' in self._Specification) or (int(self._Specification['PI_SPECIFICATION_VERSION'], 16) < 0x00010032):\r
+ if self._ModuleType == SUP_MODULE_MM_CORE_STANDALONE:\r
+ EdkLogger.error("build", FORMAT_NOT_SUPPORTED, "MM_CORE_STANDALONE module type can't be used in the module with PI_SPECIFICATION_VERSION less than 0x00010032", File=self.MetaFile)\r
+ if self._ModuleType == SUP_MODULE_MM_STANDALONE:\r
+ EdkLogger.error("build", FORMAT_NOT_SUPPORTED, "MM_STANDALONE module type can't be used in the module with PI_SPECIFICATION_VERSION less than 0x00010032", File=self.MetaFile)\r
+ if 'PCI_DEVICE_ID' in self._Defs and 'PCI_VENDOR_ID' in self._Defs \\r
+ and 'PCI_CLASS_CODE' in self._Defs and 'PCI_REVISION' in self._Defs:\r
+ self._BuildType = 'UEFI_OPTIONROM'\r
+ if 'PCI_COMPRESS' in self._Defs:\r
+ if self._Defs['PCI_COMPRESS'] not in ('TRUE', 'FALSE'):\r
+ EdkLogger.error("build", FORMAT_INVALID, "Expected TRUE/FALSE for PCI_COMPRESS: %s" % self.MetaFile)\r
+\r
+ elif 'UEFI_HII_RESOURCE_SECTION' in self._Defs \\r
+ and self._Defs['UEFI_HII_RESOURCE_SECTION'] == 'TRUE':\r
+ self._BuildType = 'UEFI_HII'\r
else:\r
- if not self._ComponentType:\r
- EdkLogger.error("build", ATTRIBUTE_NOT_AVAILABLE,\r
- "COMPONENT_TYPE is not given", File=self.MetaFile)\r
- self._BuildType = self._ComponentType.upper()\r
- if self._ComponentType in COMPONENT_TO_MODULE_MAP_DICT:\r
- self._ModuleType = COMPONENT_TO_MODULE_MAP_DICT[self._ComponentType]\r
- if self._ComponentType == EDK_COMPONENT_TYPE_LIBRARY:\r
- self._LibraryClass = [LibraryClassObject(self._BaseName, SUP_MODULE_LIST)]\r
- # make use some [nmake] section macros\r
- Macros = self._Macros\r
- Macros["EDK_SOURCE"] = GlobalData.gEcpSource\r
- Macros['PROCESSOR'] = self._Arch\r
- RecordList = self._RawData[MODEL_META_DATA_NMAKE, self._Arch, self._Platform]\r
- for Name, Value, Dummy, Arch, Platform, ID, LineNo in RecordList:\r
- Value = ReplaceMacro(Value, Macros, True)\r
- if Name == "IMAGE_ENTRY_POINT":\r
- if self._ModuleEntryPointList is None:\r
- self._ModuleEntryPointList = []\r
- self._ModuleEntryPointList.append(Value)\r
- elif Name == "DPX_SOURCE":\r
- File = PathClass(NormPath(Value), self._ModuleDir, Arch=self._Arch)\r
- # check the file validation\r
- ErrorCode, ErrorInfo = File.Validate(".dxs", CaseSensitive=False)\r
- if ErrorCode != 0:\r
- EdkLogger.error('build', ErrorCode, ExtraData=ErrorInfo,\r
- File=self.MetaFile, Line=LineNo)\r
- if not self._DependencyFileList:\r
- self._DependencyFileList = []\r
- self._DependencyFileList.append(File)\r
- else:\r
- ToolList = self._NMAKE_FLAG_PATTERN_.findall(Name)\r
- if len(ToolList) == 1:\r
- if self._BuildOptions is None:\r
- self._BuildOptions = OrderedDict()\r
+ self._BuildType = self._ModuleType.upper()\r
\r
- if ToolList[0] in self._TOOL_CODE_:\r
- Tool = self._TOOL_CODE_[ToolList[0]]\r
- else:\r
- Tool = ToolList[0]\r
- ToolChain = "*_*_*_%s_FLAGS" % Tool\r
- # Edk.x only support MSFT tool chain\r
- # ignore not replaced macros in value\r
- ValueList = GetSplitList(' ' + Value, '/D')\r
- Dummy = ValueList[0]\r
- for Index in range(1, len(ValueList)):\r
- if ValueList[Index][-1] == '=' or ValueList[Index] == '':\r
- continue\r
- Dummy = Dummy + ' /D ' + ValueList[Index]\r
- Value = Dummy.strip()\r
- if (TAB_COMPILER_MSFT, ToolChain) not in self._BuildOptions:\r
- self._BuildOptions[TAB_COMPILER_MSFT, ToolChain] = Value\r
- else:\r
- OptionString = self._BuildOptions[TAB_COMPILER_MSFT, ToolChain]\r
- self._BuildOptions[TAB_COMPILER_MSFT, ToolChain] = OptionString + " " + Value\r
+ if self._DxsFile:\r
+ File = PathClass(NormPath(self._DxsFile), self._ModuleDir, Arch=self._Arch)\r
+ # check the file validation\r
+ ErrorCode, ErrorInfo = File.Validate(".dxs", CaseSensitive=False)\r
+ if ErrorCode != 0:\r
+ EdkLogger.error('build', ErrorCode, ExtraData=ErrorInfo,\r
+ File=self.MetaFile, Line=LineNo)\r
+ if not self._DependencyFileList:\r
+ self._DependencyFileList = []\r
+ self._DependencyFileList.append(File)\r
\r
## Retrieve file version\r
@cached_property\r
RetVal = []\r
RecordList = self._RawData[MODEL_EFI_BINARY_FILE, self._Arch, self._Platform]\r
Macros = self._Macros\r
- Macros["EDK_SOURCE"] = GlobalData.gEcpSource\r
Macros['PROCESSOR'] = self._Arch\r
for Record in RecordList:\r
FileType = Record[0]\r
ToolChainFamily = Record[1]\r
TagName = Record[2]\r
ToolCode = Record[3]\r
- if self.AutoGenVersion < 0x00010005:\r
- Macros["EDK_SOURCE"] = GlobalData.gEcpSource\r
- Macros['PROCESSOR'] = self._Arch\r
- SourceFile = NormPath(Record[0], Macros)\r
- if SourceFile[0] == os.path.sep:\r
- SourceFile = mws.join(GlobalData.gWorkspace, SourceFile[1:])\r
- # old module source files (Edk)\r
- File = PathClass(SourceFile, self._ModuleDir, self._SourceOverridePath,\r
- '', False, self._Arch, ToolChainFamily, '', TagName, ToolCode)\r
- # check the file validation\r
- ErrorCode, ErrorInfo = File.Validate(CaseSensitive=False)\r
- if ErrorCode != 0:\r
- if File.Ext.lower() == '.h':\r
- EdkLogger.warn('build', 'Include file not found', ExtraData=ErrorInfo,\r
- File=self.MetaFile, Line=LineNo)\r
- continue\r
- else:\r
- EdkLogger.error('build', ErrorCode, ExtraData=File, File=self.MetaFile, Line=LineNo)\r
- else:\r
- File = PathClass(NormPath(Record[0], Macros), self._ModuleDir, '',\r
- '', False, self._Arch, ToolChainFamily, '', TagName, ToolCode)\r
- # check the file validation\r
- ErrorCode, ErrorInfo = File.Validate()\r
- if ErrorCode != 0:\r
- EdkLogger.error('build', ErrorCode, ExtraData=ErrorInfo, File=self.MetaFile, Line=LineNo)\r
+\r
+ File = PathClass(NormPath(Record[0], Macros), self._ModuleDir, '',\r
+ '', False, self._Arch, ToolChainFamily, '', TagName, ToolCode)\r
+ # check the file validation\r
+ ErrorCode, ErrorInfo = File.Validate()\r
+ if ErrorCode != 0:\r
+ EdkLogger.error('build', ErrorCode, ExtraData=ErrorInfo, File=self.MetaFile, Line=LineNo)\r
\r
RetVal.append(File)\r
# add any previously found dependency files to the source list\r
RecordList = self._RawData[MODEL_EFI_INCLUDE, self._Arch, self._Platform]\r
for Record in RecordList:\r
if Record[0].find('EDK_SOURCE') > -1:\r
- Macros['EDK_SOURCE'] = GlobalData.gEcpSource\r
File = NormPath(Record[0], self._Macros)\r
if File[0] == '.':\r
File = os.path.join(self._ModuleDir, File)\r
RetVal.append(File)\r
\r
# TRICK: let compiler to choose correct header file\r
- Macros['EDK_SOURCE'] = GlobalData.gEdkSource\r
File = NormPath(Record[0], self._Macros)\r
if File[0] == '.':\r
File = os.path.join(self._ModuleDir, File)\r
File = RealPath(os.path.normpath(File))\r
if File:\r
RetVal.append(File)\r
- if not File and Record[0].find('EFI_SOURCE') > -1:\r
- # tricky to regard WorkSpace as EFI_SOURCE\r
- Macros['EFI_SOURCE'] = GlobalData.gWorkspace\r
- File = NormPath(Record[0], Macros)\r
- if File[0] == '.':\r
- File = os.path.join(self._ModuleDir, File)\r
- else:\r
- File = os.path.join(GlobalData.gWorkspace, File)\r
- File = RealPath(os.path.normpath(File))\r
- if File:\r
- RetVal.append(File)\r
return RetVal\r
\r
## Retrieve packages this module depends on\r
RetVal = []\r
RecordList = self._RawData[MODEL_META_DATA_PACKAGE, self._Arch, self._Platform]\r
Macros = self._Macros\r
- Macros['EDK_SOURCE'] = GlobalData.gEcpSource\r
for Record in RecordList:\r
File = PathClass(NormPath(Record[0], Macros), GlobalData.gWorkspace, Arch=self._Arch)\r
# check the file validation\r