]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/build/build.py
Sync BaseTools Branch (version r2149) to EDKII main trunk.
[mirror_edk2.git] / BaseTools / Source / Python / build / build.py
index 84f5636414f0867aaf2eca0bca3cab74bb67f787..b794c0a361ea95de7a01477eb1c7ed0d3bd9dc54 100644 (file)
@@ -1,7 +1,7 @@
 ## @file\r
 # build a platform or a module\r
 #\r
-#  Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>\r
+#  Copyright (c) 2007 - 2011, Intel Corporation. All rights reserved.<BR>\r
 #\r
 #  This program and the accompanying materials\r
 #  are licensed and made available under the terms and conditions of the BSD License\r
@@ -102,7 +102,8 @@ def CheckEnvVariable():
     #\r
     # Check EFI_SOURCE (R8 build convention). EDK_SOURCE will always point to ECP\r
     #\r
-    os.environ["ECP_SOURCE"] = os.path.join(WorkspaceDir, GlobalData.gEdkCompatibilityPkg)\r
+    if "ECP_SOURCE" not in os.environ:\r
+        os.environ["ECP_SOURCE"] = os.path.join(WorkspaceDir, GlobalData.gEdkCompatibilityPkg)\r
     if "EFI_SOURCE" not in os.environ:\r
         os.environ["EFI_SOURCE"] = os.environ["ECP_SOURCE"]\r
     if "EDK_SOURCE" not in os.environ:\r
@@ -888,7 +889,7 @@ class Build():
                     self.LoadFixAddress = int (LoadFixAddressString, 16)\r
                 else:\r
                     self.LoadFixAddress = int (LoadFixAddressString)\r
-            except:
+            except:\r
                 EdkLogger.error("build", PARAMETER_INVALID, "FIX_LOAD_TOP_MEMORY_ADDRESS %s is not valid dec or hex string" % (LoadFixAddressString))\r
             if self.LoadFixAddress < 0:\r
                 EdkLogger.error("build", PARAMETER_INVALID, "FIX_LOAD_TOP_MEMORY_ADDRESS is set to the invalid negative value %s" % (LoadFixAddressString))\r
@@ -908,6 +909,8 @@ class Build():
                 self.FvList = []\r
         else:\r
             FdfParserObj = FdfParser(str(self.Fdf))\r
+            for key in self.Db._GlobalMacros:\r
+                InputMacroDict[key] = self.Db._GlobalMacros[key]\r
             FdfParserObj.ParseFile()\r
             for fvname in self.FvList:\r
                 if fvname.upper() not in FdfParserObj.Profile.FvDict.keys():\r
@@ -974,6 +977,7 @@ class Build():
             if not self.SkipAutoGen or Target == 'genmake':\r
                 self.Progress.Start("Generating makefile")\r
                 AutoGenObject.CreateMakeFile(CreateDepsMakeFile)\r
+                AutoGenObject.CreateAsBuiltInf()\r
                 self.Progress.Stop("done!")\r
             if Target == "genmake":\r
                 return True\r
@@ -1007,8 +1011,8 @@ class Build():
         InfFileNameList = ModuleList.keys()\r
         #InfFileNameList.sort()\r
         for InfFile in InfFileNameList:\r
-            sys.stdout.write (".")
-            sys.stdout.flush()
+            sys.stdout.write (".")\r
+            sys.stdout.flush()\r
             ModuleInfo = ModuleList[InfFile]\r
             ModuleName = ModuleInfo.BaseName\r
             ModuleOutputImage = ModuleInfo.Image.FileName\r
@@ -1141,8 +1145,8 @@ class Build():
     ## Collect MAP information of all modules\r
     #\r
     def _CollectModuleMapBuffer (self, MapBuffer, ModuleList):\r
-        sys.stdout.write ("Generate Load Module At Fix Address Map")
-        sys.stdout.flush()
+        sys.stdout.write ("Generate Load Module At Fix Address Map")\r
+        sys.stdout.flush()\r
         PatchEfiImageList = []\r
         PeiModuleList  = {}\r
         BtModuleList   = {}\r
@@ -1187,11 +1191,11 @@ class Build():
                         SmmModuleList[Module.MetaFile] = ImageInfo\r
                         SmmSize += ImageInfo.Image.Size\r
                         if Module.ModuleType == 'DXE_SMM_DRIVER':\r
-                            PiSpecVersion = 0
-                            if 'PI_SPECIFICATION_VERSION' in Module.Module.Specification:
-                                PiSpecVersion = Module.Module.Specification['PI_SPECIFICATION_VERSION']
+                            PiSpecVersion = '0x00000000'\r
+                            if 'PI_SPECIFICATION_VERSION' in Module.Module.Specification:\r
+                                PiSpecVersion = Module.Module.Specification['PI_SPECIFICATION_VERSION']\r
                             # for PI specification < PI1.1, DXE_SMM_DRIVER also runs as BOOT time driver.\r
-                            if PiSpecVersion < 0x0001000A:\r
+                            if int(PiSpecVersion, 16) < 0x0001000A:\r
                                 BtModuleList[Module.MetaFile] = ImageInfo\r
                                 BtSize += ImageInfo.Image.Size\r
                     break\r
@@ -1245,7 +1249,7 @@ class Build():
             #\r
             # Get PCD offset in EFI image by GenPatchPcdTable function\r
             #\r
-            PcdTable = parsePcdInfoFromMapFile(EfiImageMap, EfiImage) 
+            PcdTable = parsePcdInfoFromMapFile(EfiImageMap, EfiImage) \r
             #\r
             # Patch real PCD value by PatchPcdValue tool\r
             #\r
@@ -1277,8 +1281,8 @@ class Build():
         self._RebaseModule (MapBuffer, RtBaseAddr, RtModuleList, TopMemoryAddress == 0)\r
         self._RebaseModule (MapBuffer, 0x1000, SmmModuleList, AddrIsOffset = False, ModeIsSmm = True)\r
         MapBuffer.write('\n\n')\r
-        sys.stdout.write ("\n")
-        sys.stdout.flush()
+        sys.stdout.write ("\n")\r
+        sys.stdout.flush()\r
     \r
     ## Save platform Map file\r
     #\r
@@ -1291,10 +1295,10 @@ class Build():
         # Save address map into MAP file.\r
         #\r
         SaveFileOnChange(MapFilePath, MapBuffer.getvalue(), False)\r
-        MapBuffer.close()
-        if self.LoadFixAddress != 0:
-            sys.stdout.write ("\nLoad Module At Fix Address Map file can be found at %s\n" %(MapFilePath))
-        sys.stdout.flush()
+        MapBuffer.close()\r
+        if self.LoadFixAddress != 0:\r
+            sys.stdout.write ("\nLoad Module At Fix Address Map file can be found at %s\n" %(MapFilePath))\r
+        sys.stdout.flush()\r
 \r
     ## Build active platform for different build targets and different tool chains\r
     #\r
@@ -1487,6 +1491,7 @@ class Build():
 \r
                             if not self.SkipAutoGen or self.Target == 'genmake':\r
                                 Ma.CreateMakeFile(True)\r
+                                Ma.CreateAsBuiltInf()\r
                             if self.Target == "genmake":\r
                                 continue\r
                         self.Progress.Stop("done!")\r