# EdkII modules always use "_ModuleEntryPoint" as entry point\r
ImageEntryPoint = "_ModuleEntryPoint"\r
\r
+ for k, v in self._AutoGenObject.Module.Defines.iteritems():\r
+ if k not in self._AutoGenObject.Macros.keys():\r
+ self._AutoGenObject.Macros[k] = v\r
+\r
+ if 'MODULE_ENTRY_POINT' not in self._AutoGenObject.Macros.keys():\r
+ self._AutoGenObject.Macros['MODULE_ENTRY_POINT'] = ModuleEntryPoint\r
+ if 'ARCH_ENTRY_POINT' not in self._AutoGenObject.Macros.keys():\r
+ self._AutoGenObject.Macros['ARCH_ENTRY_POINT'] = ArchEntryPoint\r
+ if 'IMAGE_ENTRY_POINT' not in self._AutoGenObject.Macros.keys():\r
+ self._AutoGenObject.Macros['IMAGE_ENTRY_POINT'] = ImageEntryPoint\r
+\r
# tools definitions\r
ToolsDef = []\r
IncPrefix = self._INC_FLAG_[self._AutoGenObject.ToolChainFamily]\r
RespFileListContent = ''\r
for Resp in RespDict.keys():\r
RespFile = os.path.join(self._AutoGenObject.OutputDir, str(Resp).lower() + '.txt')\r
- SaveFileOnChange(RespFile, RespDict[Resp], False)\r
- ToolsDef.append("%s = %s" % (Resp, '@' + RespFile))\r
+ StrList = RespDict[Resp].split(' ')\r
+ UnexpandMacro = []\r
+ NewStr = []\r
+ for Str in StrList:\r
+ if '$' in Str:\r
+ UnexpandMacro.append(Str)\r
+ else:\r
+ NewStr.append(Str)\r
+ UnexpandMacroStr = ' '.join(UnexpandMacro)\r
+ NewRespStr = ' '.join(NewStr)\r
+ SaveFileOnChange(RespFile, NewRespStr, False)\r
+ ToolsDef.append("%s = %s" % (Resp, UnexpandMacroStr + ' @' + RespFile))\r
RespFileListContent += '@' + RespFile + os.linesep\r
- RespFileListContent += RespDict[Resp] + os.linesep\r
+ RespFileListContent += NewRespStr + os.linesep\r
SaveFileOnChange(RespFileList, RespFileListContent, False)\r
else:\r
if os.path.exists(RespFileList):\r
for item in SingleCommandList[1:]:\r
if FlagDict[Tool]['Macro'] in item:\r
Str = self._AutoGenObject._BuildOption[Tool]['FLAGS']\r
+ for Option in self._AutoGenObject.BuildOption.keys():\r
+ for Attr in self._AutoGenObject.BuildOption[Option]:\r
+ if Str.find(Option + '_' + Attr) != -1:\r
+ Str = Str.replace('$(' + Option + '_' + Attr + ')', self._AutoGenObject.BuildOption[Option][Attr])\r
while(Str.find('$(') != -1):\r
for macro in self._AutoGenObject.Macros.keys():\r
MacroName = '$('+ macro + ')'\r
Str = Str.replace(MacroName, self._AutoGenObject.Macros[macro])\r
break\r
else:\r
- EdkLogger.error("build", AUTOGEN_ERROR, "Not supported macro is found in make command : %s" % Str, ExtraData="[%s]" % str(self._AutoGenObject))\r
+ break\r
SingleCommandLength += len(Str)\r
elif '$(INC)' in item:\r
SingleCommandLength += self._AutoGenObject.IncludePathLength + len(IncPrefix) * len(self._AutoGenObject._IncludePathList)\r
Str = Str.replace(MacroName, self._AutoGenObject.Macros[macro])\r
break\r
else:\r
- EdkLogger.error("build", AUTOGEN_ERROR, "Not supported macro is found in make command : %s" % Str, ExtraData="[%s]" % str(self._AutoGenObject))\r
-\r
+ break\r
SingleCommandLength += len(Str)\r
\r
if SingleCommandLength > GlobalData.gCommandMaxLength:\r
Value = self._AutoGenObject.BuildOption[Flag]['FLAGS']\r
for inc in self._AutoGenObject._IncludePathList:\r
Value += ' ' + IncPrefix + inc\r
+ for Option in self._AutoGenObject.BuildOption.keys():\r
+ for Attr in self._AutoGenObject.BuildOption[Option]:\r
+ if Value.find(Option + '_' + Attr) != -1:\r
+ Value = Value.replace('$(' + Option + '_' + Attr + ')', self._AutoGenObject.BuildOption[Option][Attr])\r
while (Value.find('$(') != -1):\r
for macro in self._AutoGenObject.Macros.keys():\r
MacroName = '$('+ macro + ')'\r
Value = Value.replace(MacroName, self._AutoGenObject.Macros[macro])\r
break\r
else:\r
- EdkLogger.error("build", AUTOGEN_ERROR, "Not supported macro is found in make command : %s" % Str, ExtraData="[%s]" % str(self._AutoGenObject))\r
+ break\r
RespDict[Key] = Value\r
for Target in BuildTargets:\r
for i, SingleCommand in enumerate(BuildTargets[Target].Commands):\r