Re: [edk2] [Patch] BaseTools: Correct PcdArray value assigment statement

2019-01-03 Thread Gao, Liming
Reviewed-by: Liming Gao 

>-Original Message-
>From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of
>BobCF
>Sent: Saturday, December 29, 2018 4:43 PM
>To: edk2-devel@lists.01.org
>Cc: Gao, Liming 
>Subject: [edk2] [Patch] BaseTools: Correct PcdArray value assigment
>statement
>
>https://bugzilla.tianocore.org/show_bug.cgi?id=1410
>BaseTools should not generate C structure array initial value
>if the value is not specified with CODE style.
>
>This patch is going to remove the incorrect initial value statement
>and correct the Pcd Array value assignment statement.
>
>Contributed-under: TianoCore Contribution Agreement 1.1
>Signed-off-by: Bob Feng 
>Cc: Liming Gao 
>---
> .../Python/Workspace/BuildClassObject.py  |   1 -
> .../Source/Python/Workspace/DscBuildData.py   | 117 +++---
> 2 files changed, 73 insertions(+), 45 deletions(-)
>
>diff --git a/BaseTools/Source/Python/Workspace/BuildClassObject.py
>b/BaseTools/Source/Python/Workspace/BuildClassObject.py
>index 52b3369561..73920c5153 100644
>--- a/BaseTools/Source/Python/Workspace/BuildClassObject.py
>+++ b/BaseTools/Source/Python/Workspace/BuildClassObject.py
>@@ -99,11 +99,10 @@ class PcdClassObject(object):
> for demesionattr in self.DefaultValues:
> deme = ArrayIndex.findall(demesionattr)
> for i in range(len(deme)-1):
> if int(deme[i].lstrip("[").rstrip("]").strip()) > 
> int(self._Capacity[i]):
> print "error"
>-self._Capacity = [str(int(d) + 1) for d in self._Capacity]
> return self._Capacity
> @property
> def DatumType(self):
> return self._DatumType
>
>diff --git a/BaseTools/Source/Python/Workspace/DscBuildData.py
>b/BaseTools/Source/Python/Workspace/DscBuildData.py
>index 7f6e966b5f..7e82e8e934 100644
>--- a/BaseTools/Source/Python/Workspace/DscBuildData.py
>+++ b/BaseTools/Source/Python/Workspace/DscBuildData.py
>@@ -1738,21 +1738,26 @@ class DscBuildData(PlatformBuildClassObject):
>
> def GenerateSizeFunction(self, Pcd):
> CApp = "// Default Value in Dec \n"
> CApp = CApp + "void Cal_%s_%s_Size(UINT32 *Size){\n" %
>(Pcd.TokenSpaceGuidCName, Pcd.TokenCName)
> if Pcd.IsArray():
>-if (len(Pcd.Capacity) == 1 and Pcd.Capacity[0] != '0') or
>(len(Pcd.Capacity) >1 and reduce(lambda x,y:int(x)*int(y), Pcd.Capacity)) > 0:
>-CApp += "  *Size = (sizeof (%s) * (%s) > *Size) ? sizeof (%s) 
>* (%s):
>*Size; \n" % (Pcd.BaseDatumType,
>"*".join(Pcd.Capacity),Pcd.BaseDatumType, "*".join(Pcd.Capacity))
>-if "{CODE(" in Pcd.DefaultValueFromDec:
>-CApp += "  *Size = (sizeof (%s_%s_INIT_Value) > *Size ? sizeof
>(%s_%s_INIT_Value) : *Size);\n" %
>(Pcd.TokenSpaceGuidCName,Pcd.TokenCName,Pcd.TokenSpaceGuidCName,
>Pcd.TokenCName)
>-for skuname in Pcd.SkuInfoList:
>-skuobj = Pcd.SkuInfoList[skuname]
>-if skuobj.VariableName:
>-for defaultstore in skuobj.DefaultStoreDict:
>-CApp += "  *Size = (sizeof (%s_%s_%s_%s_Value) > 
>*Size ? sizeof
>(%s_%s_%s_%s_Value) : *Size);\n" %
>(Pcd.TokenSpaceGuidCName,Pcd.TokenCName,skuname,defaultstore,Pcd.T
>okenSpaceGuidCName,Pcd.TokenCName,skuname,defaultstore)
>-else:
>-CApp += "  *Size = (sizeof (%s_%s_%s_%s_Value) > *Size ? 
>sizeof
>(%s_%s_%s_%s_Value) : *Size);\n" %
>(Pcd.TokenSpaceGuidCName,Pcd.TokenCName,skuname,TAB_DEFAULT_STO
>RES_DEFAULT,Pcd.TokenSpaceGuidCName,Pcd.TokenCName,skuname,TAB_
>DEFAULT_STORES_DEFAULT)
>+if Pcd.Type in PCD_DYNAMIC_TYPE_SET |
>PCD_DYNAMIC_EX_TYPE_SET:
>+for skuname in Pcd.SkuInfoList:
>+skuobj = Pcd.SkuInfoList[skuname]
>+if skuobj.VariableName:
>+for defaultstore in skuobj.DefaultStoreDict:
>+pcddef =
>self.GetPcdDscRawDefaultValue(Pcd,skuname,defaultstore)
>+if pcddef and "{CODE(" in pcddef:
>+CApp += "  *Size = (sizeof 
>(%s_%s_%s_%s_Value) > *Size ?
>sizeof (%s_%s_%s_%s_Value) : *Size);\n" %
>(Pcd.TokenSpaceGuidCName,Pcd.TokenCName,skuname,defaultstore,Pcd.T
>okenSpaceGuidCName,Pcd.TokenCName,skuname,defaultstore)
>+else:
>+pcddef =
>self.GetPcdDscRawDefaultValue(Pcd,skuname,TAB_DEFAULT_STORES_DEFA
>ULT)
>+if pcddef and "

[edk2] [Patch] BaseTools: Correct PcdArray value assigment statement

2018-12-29 Thread BobCF
https://bugzilla.tianocore.org/show_bug.cgi?id=1410
BaseTools should not generate C structure array initial value
if the value is not specified with CODE style.

This patch is going to remove the incorrect initial value statement
and correct the Pcd Array value assignment statement.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Bob Feng 
Cc: Liming Gao 
---
 .../Python/Workspace/BuildClassObject.py  |   1 -
 .../Source/Python/Workspace/DscBuildData.py   | 117 +++---
 2 files changed, 73 insertions(+), 45 deletions(-)

diff --git a/BaseTools/Source/Python/Workspace/BuildClassObject.py 
b/BaseTools/Source/Python/Workspace/BuildClassObject.py
index 52b3369561..73920c5153 100644
--- a/BaseTools/Source/Python/Workspace/BuildClassObject.py
+++ b/BaseTools/Source/Python/Workspace/BuildClassObject.py
@@ -99,11 +99,10 @@ class PcdClassObject(object):
 for demesionattr in self.DefaultValues:
 deme = ArrayIndex.findall(demesionattr)
 for i in range(len(deme)-1):
 if int(deme[i].lstrip("[").rstrip("]").strip()) > 
int(self._Capacity[i]):
 print "error"
-self._Capacity = [str(int(d) + 1) for d in self._Capacity]
 return self._Capacity
 @property
 def DatumType(self):
 return self._DatumType
 
diff --git a/BaseTools/Source/Python/Workspace/DscBuildData.py 
b/BaseTools/Source/Python/Workspace/DscBuildData.py
index 7f6e966b5f..7e82e8e934 100644
--- a/BaseTools/Source/Python/Workspace/DscBuildData.py
+++ b/BaseTools/Source/Python/Workspace/DscBuildData.py
@@ -1738,21 +1738,26 @@ class DscBuildData(PlatformBuildClassObject):
 
 def GenerateSizeFunction(self, Pcd):
 CApp = "// Default Value in Dec \n"
 CApp = CApp + "void Cal_%s_%s_Size(UINT32 *Size){\n" % 
(Pcd.TokenSpaceGuidCName, Pcd.TokenCName)
 if Pcd.IsArray():
-if (len(Pcd.Capacity) == 1 and Pcd.Capacity[0] != '0') or 
(len(Pcd.Capacity) >1 and reduce(lambda x,y:int(x)*int(y), Pcd.Capacity)) > 0:
-CApp += "  *Size = (sizeof (%s) * (%s) > *Size) ? sizeof (%s) 
* (%s): *Size; \n" % (Pcd.BaseDatumType, 
"*".join(Pcd.Capacity),Pcd.BaseDatumType, "*".join(Pcd.Capacity))
-if "{CODE(" in Pcd.DefaultValueFromDec:
-CApp += "  *Size = (sizeof (%s_%s_INIT_Value) > *Size ? sizeof 
(%s_%s_INIT_Value) : *Size);\n" % 
(Pcd.TokenSpaceGuidCName,Pcd.TokenCName,Pcd.TokenSpaceGuidCName,Pcd.TokenCName)
-for skuname in Pcd.SkuInfoList:
-skuobj = Pcd.SkuInfoList[skuname]
-if skuobj.VariableName:
-for defaultstore in skuobj.DefaultStoreDict:
-CApp += "  *Size = (sizeof (%s_%s_%s_%s_Value) > *Size 
? sizeof (%s_%s_%s_%s_Value) : *Size);\n" % 
(Pcd.TokenSpaceGuidCName,Pcd.TokenCName,skuname,defaultstore,Pcd.TokenSpaceGuidCName,Pcd.TokenCName,skuname,defaultstore)
-else:
-CApp += "  *Size = (sizeof (%s_%s_%s_%s_Value) > *Size ? 
sizeof (%s_%s_%s_%s_Value) : *Size);\n" % 
(Pcd.TokenSpaceGuidCName,Pcd.TokenCName,skuname,TAB_DEFAULT_STORES_DEFAULT,Pcd.TokenSpaceGuidCName,Pcd.TokenCName,skuname,TAB_DEFAULT_STORES_DEFAULT)
+if Pcd.Type in PCD_DYNAMIC_TYPE_SET | PCD_DYNAMIC_EX_TYPE_SET:
+for skuname in Pcd.SkuInfoList:
+skuobj = Pcd.SkuInfoList[skuname]
+if skuobj.VariableName:
+for defaultstore in skuobj.DefaultStoreDict:
+pcddef = 
self.GetPcdDscRawDefaultValue(Pcd,skuname,defaultstore)
+if pcddef and "{CODE(" in pcddef:
+CApp += "  *Size = (sizeof (%s_%s_%s_%s_Value) 
> *Size ? sizeof (%s_%s_%s_%s_Value) : *Size);\n" % 
(Pcd.TokenSpaceGuidCName,Pcd.TokenCName,skuname,defaultstore,Pcd.TokenSpaceGuidCName,Pcd.TokenCName,skuname,defaultstore)
+else:
+pcddef = 
self.GetPcdDscRawDefaultValue(Pcd,skuname,TAB_DEFAULT_STORES_DEFAULT)
+if pcddef and "{CODE(" in pcddef:
+CApp += "  *Size = (sizeof (%s_%s_%s_%s_Value) > 
*Size ? sizeof (%s_%s_%s_%s_Value) : *Size);\n" % 
(Pcd.TokenSpaceGuidCName,Pcd.TokenCName,skuname,TAB_DEFAULT_STORES_DEFAULT,Pcd.TokenSpaceGuidCName,Pcd.TokenCName,skuname,TAB_DEFAULT_STORES_DEFAULT)
+else:
+pcddef = 
self.GetPcdDscRawDefaultValue(Pcd,TAB_DEFAULT,TAB_DEFAULT_STORES_DEFAULT)
+if pcddef and "{CODE(" in pcddef:
+CApp += "  *Size = (sizeof (%s_%s_%s_%s_Value) > *Size ? 
sizeof (%s_%s_%s_%s_Value) : *Size);\n" % 
(Pcd.TokenSpaceGuidCName,Pcd.TokenCName,TAB_DEFAULT,TAB_DEFAULT_STORES_DEFAULT,Pcd.TokenSpaceGuidCName,Pcd.TokenCName,TAB_DEFAULT,TAB_DEFAULT_STORES_DEFAULT)
 for index in Pcd.DefaultValues:
 FieldList = Pcd.DefaultValues[index]
 if not