Sync EDKII BaseTools to BaseTools project r1911.
[efi/edk2/.git] / edk2 / BaseTools / Source / Python / build / build.py
index 9705097..e3a3dd9 100644 (file)
@@ -738,6 +738,16 @@ class Build():
         # parse target.txt, tools_def.txt, and platform file\r
         #self.RestoreBuildData()\r
         self.LoadConfiguration()\r
+        \r
+        #\r
+        # @attention Treat $(TARGET) in meta data files as special macro when it has only one build target.\r
+        # This is not a complete support for $(TARGET) macro as it can only support one build target in ONE\r
+        # invocation of build command. However, it should cover the frequent usage model that $(TARGET) macro\r
+        # is used in DSC files to specify different libraries & PCD setting for debug/release build.\r
+        #\r
+        if len(self.BuildTargetList) == 1:\r
+            self.Db._GlobalMacros.setdefault("TARGET", self.BuildTargetList[0])\r
+        \r
         self.InitBuild()\r
 \r
         # print current build environment and configuration\r
@@ -1336,7 +1346,6 @@ class Build():
                         self.FvList,\r
                         self.SkuId\r
                         )\r
-                self.BuildReport.AddPlatformReport(Wa)\r
                 Wa.CreateMakeFile(False)\r
                 self.Progress.Stop("done!")\r
                 MaList = []\r
@@ -1345,6 +1354,8 @@ class Build():
                     if Ma == None: continue\r
                     MaList.append(Ma)\r
                     self._Build(self.Target, Ma)\r
+\r
+                self.BuildReport.AddPlatformReport(Wa, MaList)\r
                 if MaList == []:\r
                     EdkLogger.error(\r
                                 'build',\r