]> git.proxmox.com Git - mirror_edk2.git/commitdiff
BaseTools: Fix incremental build bug on DynamicPcd Token Generation
authorYonghong Zhu <yonghong.zhu@intel.com>
Mon, 22 May 2017 14:01:26 +0000 (22:01 +0800)
committerYonghong Zhu <yonghong.zhu@intel.com>
Wed, 24 May 2017 05:13:39 +0000 (13:13 +0800)
During incremental build, we meet the bug that the different drivers use
the different token for the same DynamicPcd.

Cc: Liming Gao <liming.gao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Yonghong Zhu <yonghong.zhu@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
BaseTools/Source/Python/AutoGen/AutoGen.py
BaseTools/Source/Python/build/build.py

index 736c1ae976333f3b3c345866555f006929ae4efe..fa6ec5608f84edcfdcdfa71a91a51f5b18829078 100644 (file)
@@ -670,6 +670,19 @@ class WorkspaceAutoGen(AutoGen):
         content += str(GlobalData.BuildOptionPcd)\r
         SaveFileOnChange(os.path.join(self.BuildDir, 'BuildOptions'), content, False)\r
 \r
+        #\r
+        # Create PcdToken Number file for Dynamic/DynamicEx Pcd.\r
+        #\r
+        PcdTokenNumber = 'PcdTokenNumber: '\r
+        if Pa.PcdTokenNumber:\r
+            if Pa.DynamicPcdList:\r
+                for Pcd in Pa.DynamicPcdList:\r
+                    PcdTokenNumber += os.linesep\r
+                    PcdTokenNumber += str((Pcd.TokenCName, Pcd.TokenSpaceGuidCName))\r
+                    PcdTokenNumber += ' : '\r
+                    PcdTokenNumber += str(Pa.PcdTokenNumber[Pcd.TokenCName, Pcd.TokenSpaceGuidCName])\r
+        SaveFileOnChange(os.path.join(self.BuildDir, 'PcdTokenNumber'), PcdTokenNumber, False)\r
+\r
         #\r
         # Get set of workspace metafiles\r
         #\r
@@ -724,6 +737,10 @@ class WorkspaceAutoGen(AutoGen):
         #\r
         AllWorkSpaceMetaFiles.add(os.path.join(self.BuildDir, 'BuildOptions'))\r
 \r
+        # add PcdToken Number file for Dynamic/DynamicEx Pcd\r
+        #\r
+        AllWorkSpaceMetaFiles.add(os.path.join(self.BuildDir, 'PcdTokenNumber'))\r
+\r
         for Arch in self.ArchList:\r
             Platform = self.BuildDatabase[self.MetaFile, Arch, Target, Toolchain]\r
             PGen = PlatformAutoGen(self, self.MetaFile, Target, Toolchain, Arch)\r
index bd14e273d299b7aa31c2e3b9e68aec9a70e53c0d..fd94ae69d29fc81fb36f78efe8d4508f21da42bf 100644 (file)
@@ -2,7 +2,7 @@
 # build a platform or a module\r
 #\r
 #  Copyright (c) 2014, Hewlett-Packard Development Company, L.P.<BR>\r
-#  Copyright (c) 2007 - 2016, Intel Corporation. All rights reserved.<BR>\r
+#  Copyright (c) 2007 - 2017, 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
@@ -54,7 +54,7 @@ import Common.GlobalData as GlobalData
 # Version and Copyright\r
 VersionNumber = "0.60" + ' ' + gBUILD_VERSION\r
 __version__ = "%prog Version " + VersionNumber\r
-__copyright__ = "Copyright (c) 2007 - 2016, Intel Corporation  All rights reserved."\r
+__copyright__ = "Copyright (c) 2007 - 2017, Intel Corporation  All rights reserved."\r
 \r
 ## standard targets of build command\r
 gSupportedTarget = ['all', 'genc', 'genmake', 'modules', 'libraries', 'fds', 'clean', 'cleanall', 'cleanlib', 'run']\r