]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/AutoGen/AutoGen.py
Sync BaseTool trunk (version r2599) into EDKII BaseTools.
[mirror_edk2.git] / BaseTools / Source / Python / AutoGen / AutoGen.py
index 3261892bc55dbdcf8c9f883b716dbfc4cb7bdda1..6711880f60372f2781f8a6a03183de4abe95690f 100644 (file)
@@ -293,12 +293,13 @@ class WorkspaceAutoGen(AutoGen):
             Platform = self.BuildDatabase[self.MetaFile, Arch, Target, Toolchain]\r
 \r
             DecPcds = {}\r
+            DecPcdsKey = set()\r
             PGen = PlatformAutoGen(self, self.MetaFile, Target, Toolchain, Arch)\r
             Pkgs = PGen.PackageList\r
             for Pkg in Pkgs:\r
                 for Pcd in Pkg.Pcds:\r
                     DecPcds[Pcd[0], Pcd[1]] = Pkg.Pcds[Pcd]\r
-            Platform.IsPlatformPcdDeclared(DecPcds)\r
+                    DecPcdsKey.add((Pcd[0], Pcd[1], Pcd[2]))\r
 \r
             Platform.SkuName = self.SkuId\r
             for Name, Guid in PcdSet:\r
@@ -310,7 +311,21 @@ class WorkspaceAutoGen(AutoGen):
                         File = self.FdfProfile.PcdFileLineDict[Name, Guid][0],\r
                         Line = self.FdfProfile.PcdFileLineDict[Name, Guid][1]\r
                     )\r
-                Platform.AddPcd(Name, Guid, PcdSet[Name, Guid])\r
+                else:\r
+                    # Check whether Dynamic or DynamicEx PCD used in FDF file. If used, build break and give a error message.\r
+                    if (Name, Guid, TAB_PCDS_FIXED_AT_BUILD) in DecPcdsKey \\r
+                        or (Name, Guid, TAB_PCDS_PATCHABLE_IN_MODULE) in DecPcdsKey \\r
+                        or (Name, Guid, TAB_PCDS_FEATURE_FLAG) in DecPcdsKey:\r
+                        Platform.AddPcd(Name, Guid, PcdSet[Name, Guid])\r
+                        continue\r
+                    elif (Name, Guid, TAB_PCDS_DYNAMIC) in DecPcdsKey or (Name, Guid, TAB_PCDS_DYNAMIC_EX) in DecPcdsKey:\r
+                        EdkLogger.error(\r
+                                'build',\r
+                                PARSER_ERROR,\r
+                                "Using Dynamic or DynamicEx type of PCD [%s.%s] in FDF file is not allowed." % (Guid, Name),\r
+                                File = self.FdfProfile.PcdFileLineDict[Name, Guid][0],\r
+                                Line = self.FdfProfile.PcdFileLineDict[Name, Guid][1]\r
+                        )\r
 \r
             Pa = PlatformAutoGen(self, self.MetaFile, Target, Toolchain, Arch)\r
             #\r