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
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