]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/AutoGen/GenMake.py
BaseTools: not include the undefined macro in response file
[mirror_edk2.git] / BaseTools / Source / Python / AutoGen / GenMake.py
index 59ac2e8dda0f217168ce96798d0830fed6e53b43..a4844bec73e7f6f4b2070277b905c98debe780c5 100644 (file)
@@ -477,6 +477,17 @@ cleanlib:
             # EdkII modules always use "_ModuleEntryPoint" as entry point\r
             ImageEntryPoint = "_ModuleEntryPoint"\r
 \r
             # 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
         # tools definitions\r
         ToolsDef = []\r
         IncPrefix = self._INC_FLAG_[self._AutoGenObject.ToolChainFamily]\r
@@ -504,10 +515,20 @@ cleanlib:
             RespFileListContent = ''\r
             for Resp in RespDict.keys():\r
                 RespFile = os.path.join(self._AutoGenObject.OutputDir, str(Resp).lower() + '.txt')\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 += '@' + 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
             SaveFileOnChange(RespFileList, RespFileListContent, False)\r
         else:\r
             if os.path.exists(RespFileList):\r
@@ -678,6 +699,10 @@ cleanlib:
                             for item in SingleCommandList[1:]:\r
                                 if FlagDict[Tool]['Macro'] in item:\r
                                     Str = self._AutoGenObject._BuildOption[Tool]['FLAGS']\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
                                     while(Str.find('$(') != -1):\r
                                         for macro in self._AutoGenObject.Macros.keys():\r
                                             MacroName = '$('+ macro + ')'\r
@@ -685,7 +710,7 @@ cleanlib:
                                                 Str = Str.replace(MacroName, self._AutoGenObject.Macros[macro])\r
                                                 break\r
                                         else:\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
                                     SingleCommandLength += len(Str)\r
                                 elif '$(INC)' in item:\r
                                     SingleCommandLength += self._AutoGenObject.IncludePathLength + len(IncPrefix) * len(self._AutoGenObject._IncludePathList)\r
@@ -702,8 +727,7 @@ cleanlib:
                                                 Str = Str.replace(MacroName, self._AutoGenObject.Macros[macro])\r
                                                 break\r
                                         else:\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
                                     SingleCommandLength += len(Str)\r
 \r
                             if SingleCommandLength > GlobalData.gCommandMaxLength:\r
@@ -717,6 +741,10 @@ cleanlib:
                         Value = self._AutoGenObject.BuildOption[Flag]['FLAGS']\r
                         for inc in self._AutoGenObject._IncludePathList:\r
                             Value += ' ' + IncPrefix + inc\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
                         while (Value.find('$(') != -1):\r
                             for macro in self._AutoGenObject.Macros.keys():\r
                                 MacroName = '$('+ macro + ')'\r
@@ -724,7 +752,7 @@ cleanlib:
                                     Value = Value.replace(MacroName, self._AutoGenObject.Macros[macro])\r
                                     break\r
                             else:\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
                         RespDict[Key] = Value\r
                         for Target in BuildTargets:\r
                             for i, SingleCommand in enumerate(BuildTargets[Target].Commands):\r