- for skuname in self.SkuIdMgr.GetSkuChain(SkuName):\r
- if skuname == "DEFAULT":\r
- continue\r
- inherit_OverrideValues = Pcd.SkuOverrideValues[skuname]\r
- storeset = [DefaultStoreName] if DefaultStoreName == 'STANDARD' else ['STANDARD', DefaultStoreName]\r
- for defaultstorenameitem in storeset:\r
- CApp = CApp + "// SkuName: %s, DefaultStoreName: %s \n" % (skuname, defaultstorenameitem)\r
- pcddefaultvalue = Pcd.DefaultFromDSC.get(skuname,{}).get(defaultstorenameitem, Pcd.DefaultValue) if Pcd.DefaultFromDSC else Pcd.DefaultValue\r
- for FieldList in [pcddefaultvalue,inherit_OverrideValues.get(defaultstorenameitem)]:\r
- if not FieldList:\r
- continue\r
- if pcddefaultvalue and FieldList == pcddefaultvalue:\r
- IsArray = self.IsFieldValueAnArray(FieldList)\r
- if IsArray:\r
- try:\r
- FieldList = ValueExpressionEx(FieldList, "VOID*")(True)\r
- except BadExpression:\r
- EdkLogger.error("Build", FORMAT_INVALID, "Invalid value format for %s.%s, from DSC: %s" %\r
- (Pcd.TokenSpaceGuidCName, Pcd.TokenCName, FieldList))\r
- Value, ValueSize = ParseFieldValue (FieldList)\r
- if isinstance(Value, str):\r
- CApp = CApp + ' Pcd = %s; // From DSC Default Value %s\n' % (Value, Pcd.DefaultFromDSC.get(skuname,{}).get(defaultstorenameitem, Pcd.DefaultValue) if Pcd.DefaultFromDSC else Pcd.DefaultValue)\r
- elif IsArray:\r
- #\r
- # Use memcpy() to copy value into field\r
- #\r
- CApp = CApp + ' Value = %s; // From DSC Default Value %s\n' % (self.IntToCString(Value, ValueSize), Pcd.DefaultFromDSC.get(skuname,{}).get(defaultstorenameitem, Pcd.DefaultValue) if Pcd.DefaultFromDSC else Pcd.DefaultValue)\r
- CApp = CApp + ' memcpy (Pcd, Value, %d);\n' % (ValueSize)\r
- continue\r
- for FieldName in FieldList:\r
- IsArray = self.IsFieldValueAnArray(FieldList[FieldName][0])\r
- if IsArray:\r
- try:\r
- FieldList[FieldName][0] = ValueExpressionEx(FieldList[FieldName][0], "VOID*", self._GuidDict)(True)\r
- except BadExpression:\r
- EdkLogger.error('Build', FORMAT_INVALID, "Invalid value format for %s. From %s Line %d " %\r
- (".".join((Pcd.TokenSpaceGuidCName, Pcd.TokenCName, FieldName)), FieldList[FieldName][1], FieldList[FieldName][2]))\r
- try:\r
- Value, ValueSize = ParseFieldValue (FieldList[FieldName][0])\r
- except Exception:\r
- EdkLogger.error('Build', FORMAT_INVALID, "Invalid value format for %s. From %s Line %d " % (".".join((Pcd.TokenSpaceGuidCName,Pcd.TokenCName,FieldName)),FieldList[FieldName][1], FieldList[FieldName][2]))\r
- if isinstance(Value, str):\r
- CApp = CApp + ' Pcd->%s = %s; // From %s Line %d Value %s\n' % (FieldName, Value, FieldList[FieldName][1], FieldList[FieldName][2], FieldList[FieldName][0])\r
- elif IsArray:\r
- #\r
- # Use memcpy() to copy value into field\r
- #\r
- CApp = CApp + ' FieldSize = __FIELD_SIZE(%s, %s);\n' % (Pcd.DatumType, FieldName)\r
- CApp = CApp + ' Value = %s; // From %s Line %d Value %s\n' % (self.IntToCString(Value, ValueSize), FieldList[FieldName][1], FieldList[FieldName][2], FieldList[FieldName][0])\r
- CApp = CApp + ' memcpy (&Pcd->%s, Value, (FieldSize > 0 && FieldSize < %d) ? FieldSize : %d);\n' % (FieldName, ValueSize, ValueSize)\r
- else:\r
- if ValueSize > 4:\r
- CApp = CApp + ' Pcd->%s = %dULL; // From %s Line %d Value %s\n' % (FieldName, Value, FieldList[FieldName][1], FieldList[FieldName][2], FieldList[FieldName][0])\r
- else:\r
- CApp = CApp + ' Pcd->%s = %d; // From %s Line %d Value %s\n' % (FieldName, Value, FieldList[FieldName][1], FieldList[FieldName][2], FieldList[FieldName][0])\r
- if skuname == SkuName:\r
- break\r
+ if Pcd.Type not in [self._PCD_TYPE_STRING_[MODEL_PCD_FIXED_AT_BUILD],\r
+ self._PCD_TYPE_STRING_[MODEL_PCD_PATCHABLE_IN_MODULE]]:\r
+ for skuname in self.SkuIdMgr.GetSkuChain(SkuName):\r
+ storeset = [DefaultStoreName] if DefaultStoreName == 'STANDARD' else ['STANDARD', DefaultStoreName]\r
+ for defaultstorenameitem in storeset:\r
+ CApp = CApp + "// SkuName: %s, DefaultStoreName: %s \n" % (skuname, defaultstorenameitem)\r
+ CApp = CApp + self.GenerateInitValueStatement(Pcd,skuname,defaultstorenameitem)\r
+ if skuname == SkuName:\r
+ break\r
+ else:\r
+ CApp = CApp + "// SkuName: DEFAULT, DefaultStoreName: STANDARD \n"\r
+ CApp = CApp + self.GenerateInitValueStatement(Pcd,"DEFAULT","STANDARD")\r