BaseTools: change DscBuildData functions without need for self to staticmethod
[mirror_edk2.git] / BaseTools / Source / Python / Workspace / DscBuildData.py
index 1de3e6b2aef9051e99be2950e404c94480979628..f50059551e2e6708c2a71903456be5c5c88b35d5 100644 (file)
@@ -651,14 +651,17 @@ class DscBuildData(PlatformBuildClassObject):
                 if not IsValidWord(Record[1]):\r
                     EdkLogger.error('build', FORMAT_INVALID, "The format of the Sku ID name is invalid. The correct format is '(a-zA-Z0-9_)(a-zA-Z0-9_-.)*'",\r
                                     File=self.MetaFile, Line=Record[-1])\r
-                self._SkuIds[Record[1].upper()] = (str(self.ToInt(Record[0])), Record[1].upper(), Record[2].upper())\r
+                self._SkuIds[Record[1].upper()] = (str(DscBuildData.ToInt(Record[0])), Record[1].upper(), Record[2].upper())\r
             if 'DEFAULT' not in self._SkuIds:\r
                 self._SkuIds['DEFAULT'] = ("0","DEFAULT","DEFAULT")\r
             if 'COMMON' not in self._SkuIds:\r
                 self._SkuIds['COMMON'] = ("0","DEFAULT","DEFAULT")\r
         return self._SkuIds\r
-    def ToInt(self,intstr):\r
+\r
+    @staticmethod\r
+    def ToInt(intstr):\r
         return int(intstr,16) if intstr.upper().startswith("0X") else int(intstr)\r
+\r
     def _GetDefaultStores(self):\r
         if self.DefaultStores is None:\r
             self.DefaultStores = OrderedDict()\r
@@ -676,7 +679,7 @@ class DscBuildData(PlatformBuildClassObject):
                 if not IsValidWord(Record[1]):\r
                     EdkLogger.error('build', FORMAT_INVALID, "The format of the DefaultStores ID name is invalid. The correct format is '(a-zA-Z0-9_)(a-zA-Z0-9_-.)*'",\r
                                     File=self.MetaFile, Line=Record[-1])\r
-                self.DefaultStores[Record[1].upper()] = (self.ToInt(Record[0]),Record[1].upper())\r
+                self.DefaultStores[Record[1].upper()] = (DscBuildData.ToInt(Record[0]),Record[1].upper())\r
             if TAB_DEFAULT_STORES_DEFAULT not in self.DefaultStores:\r
                 self.DefaultStores[TAB_DEFAULT_STORES_DEFAULT] = (0,TAB_DEFAULT_STORES_DEFAULT)\r
             GlobalData.gDefaultStores = self.DefaultStores.keys()\r
@@ -1033,9 +1036,9 @@ class DscBuildData(PlatformBuildClassObject):
                         EdkLogger.error('build', AUTOGEN_ERROR, "The Pcd %s is not found in the DEC file." % (DisplayName))\r
                 pcdvalue = pcdvalue.replace("\\\\\\'", '\\\\\\"').replace('\\\'', '\'').replace('\\\\\\"', "\\'")\r
                 if FieldName:\r
-                    pcdvalue = self.HandleFlexiblePcd(TokenSpaceGuidCName, TokenCName, pcdvalue, PcdDatumType, self._GuidDict, FieldName)\r
+                    pcdvalue = DscBuildData.HandleFlexiblePcd(TokenSpaceGuidCName, TokenCName, pcdvalue, PcdDatumType, self._GuidDict, FieldName)\r
                 else:\r
-                    pcdvalue = self.HandleFlexiblePcd(TokenSpaceGuidCName, TokenCName, pcdvalue, PcdDatumType, self._GuidDict)\r
+                    pcdvalue = DscBuildData.HandleFlexiblePcd(TokenSpaceGuidCName, TokenCName, pcdvalue, PcdDatumType, self._GuidDict)\r
                     IsValid, Cause = CheckPcdDatum(PcdDatumType, pcdvalue)\r
                     if not IsValid:\r
                         EdkLogger.error("build", FORMAT_INVALID, Cause, ExtraData="%s.%s" % (TokenSpaceGuidCName, TokenCName))\r
@@ -1049,7 +1052,8 @@ class DscBuildData(PlatformBuildClassObject):
                         if (TokenSpaceGuidCName, TokenCName) == (PcdItem.TokenSpaceGuidCName, PcdItem.TokenCName) and FieldName =="":\r
                             PcdItem.DefaultValue = pcdvalue\r
 \r
-    def HandleFlexiblePcd(self, TokenSpaceGuidCName, TokenCName, PcdValue, PcdDatumType, GuidDict, FieldName=''):\r
+    @staticmethod\r
+    def HandleFlexiblePcd(TokenSpaceGuidCName, TokenCName, PcdValue, PcdDatumType, GuidDict, FieldName=''):\r
         if FieldName:\r
             IsArray = False\r
             TokenCName += '.' + FieldName\r
@@ -1191,7 +1195,9 @@ class DscBuildData(PlatformBuildClassObject):
             structure_pcd_data[(item[0],item[1])].append(item)\r
 \r
         return structure_pcd_data\r
-    def OverrideByFdfComm(self,StruPcds):\r
+\r
+    @staticmethod\r
+    def OverrideByFdfComm(StruPcds):\r
         StructurePcdInCom = OrderedDict()\r
         for item in GlobalData.BuildOptionPcd:\r
             if len(item) == 5 and (item[1],item[0]) in StruPcds:\r
@@ -1211,6 +1217,7 @@ class DscBuildData(PlatformBuildClassObject):
                 Pcd.PcdFieldValueFromComm[field][1] = FieldValues[field][1][0]\r
                 Pcd.PcdFieldValueFromComm[field][2] = FieldValues[field][1][1]\r
         return StruPcds\r
+\r
     def OverrideByFdfCommOverAll(self,AllPcds):\r
         def CheckStructureInComm(commpcds):\r
             if not commpcds:\r
@@ -1367,7 +1374,7 @@ class DscBuildData(PlatformBuildClassObject):
                         if defaultstoreid not in stru_pcd.SkuOverrideValues[skuid]:\r
                             stru_pcd.SkuOverrideValues[skuid][defaultstoreid] = copy.deepcopy(stru_pcd.SkuOverrideValues[nextskuid][mindefaultstorename])\r
                             stru_pcd.ValueChain[(skuid,defaultstoreid)]= (nextskuid,mindefaultstorename)\r
-        S_pcd_set = self.OverrideByFdfComm(S_pcd_set)\r
+        S_pcd_set = DscBuildData.OverrideByFdfComm(S_pcd_set)\r
         Str_Pcd_Values = self.GenerateByteArrayValue(S_pcd_set)\r
         if Str_Pcd_Values:\r
             for (skuname,StoreName,PcdGuid,PcdName,PcdValue) in Str_Pcd_Values:\r
@@ -1519,7 +1526,8 @@ class DscBuildData(PlatformBuildClassObject):
 \r
         return str(max([pcd_size for pcd_size in [get_length(item) for item in sku_values]]))\r
 \r
-    def ExecuteCommand (self, Command):\r
+    @staticmethod\r
+    def ExecuteCommand (Command):\r
         try:\r
             Process = subprocess.Popen(Command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)\r
         except:\r
@@ -1527,7 +1535,8 @@ class DscBuildData(PlatformBuildClassObject):
         Result = Process.communicate()\r
         return Process.returncode, Result[0], Result[1]\r
 \r
-    def IntToCString(self, Value, ValueSize):\r
+    @staticmethod\r
+    def IntToCString(Value, ValueSize):\r
         Result = '"'\r
         if not isinstance (Value, str):\r
             for Index in range(0, ValueSize):\r
@@ -1536,7 +1545,8 @@ class DscBuildData(PlatformBuildClassObject):
         Result = Result + '"'\r
         return Result\r
 \r
-    def GetPcdMaxSize(self,Pcd):\r
+    @staticmethod\r
+    def GetPcdMaxSize(Pcd):\r
         MaxSize = int(Pcd.MaxDatumSize,10) if Pcd.MaxDatumSize else 0\r
         if Pcd.DatumType not in ['BOOLEAN','UINT8','UINT16','UINT32','UINT64']:\r
             if Pcd.PcdValueFromComm:\r
@@ -1557,6 +1567,7 @@ class DscBuildData(PlatformBuildClassObject):
         elif Pcd.DatumType  == 'UINT64':\r
             MaxSize = 8\r
         return MaxSize\r
+\r
     def GenerateSizeFunction(self,Pcd):\r
         CApp = "// Default Value in Dec \n"\r
         CApp = CApp + "void Cal_%s_%s_Size(UINT32 *Size){\n" % (Pcd.TokenSpaceGuidCName, Pcd.TokenCName)\r
@@ -1639,13 +1650,16 @@ class DscBuildData(PlatformBuildClassObject):
                 while '[' in FieldName:\r
                     FieldName = FieldName.rsplit('[', 1)[0]\r
                     CApp = CApp + '  __FLEXIBLE_SIZE(*Size, %s, %s, %d); // From %s Line %d Value %s \n' % (Pcd.DatumType, FieldName.strip("."), ArrayIndex + 1, Pcd.PcdFieldValueFromComm[FieldName_ori][1], Pcd.PcdFieldValueFromComm[FieldName_ori][2], Pcd.PcdFieldValueFromComm[FieldName_ori][0])\r
-        CApp = CApp + "  *Size = (%d > *Size ? %d : *Size); // The Pcd maxsize is %d \n" % (self.GetPcdMaxSize(Pcd),self.GetPcdMaxSize(Pcd),self.GetPcdMaxSize(Pcd))\r
+        CApp = CApp + "  *Size = (%d > *Size ? %d : *Size); // The Pcd maxsize is %d \n" % (DscBuildData.GetPcdMaxSize(Pcd),DscBuildData.GetPcdMaxSize(Pcd),DscBuildData.GetPcdMaxSize(Pcd))\r
         CApp = CApp + "}\n"\r
         return CApp\r
-    def GenerateSizeStatments(self,Pcd):\r
+\r
+    @staticmethod\r
+    def GenerateSizeStatments(Pcd):\r
         CApp = '  Size = sizeof(%s);\n' % (Pcd.DatumType)\r
         CApp = CApp + '  Cal_%s_%s_Size(&Size);\n' % (Pcd.TokenSpaceGuidCName, Pcd.TokenCName)\r
         return CApp\r
+\r
     def GenerateDefaultValueAssignFunction(self,Pcd):\r
         CApp = "// Default value in Dec \n"\r
         CApp = CApp + "void Assign_%s_%s_Default_Value(%s *Pcd){\n" % (Pcd.TokenSpaceGuidCName, Pcd.TokenCName,Pcd.DatumType)\r
@@ -1667,7 +1681,7 @@ class DscBuildData(PlatformBuildClassObject):
         #\r
         # Use memcpy() to copy value into field\r
         #\r
-            CApp = CApp + '  Value     = %s; // From DEC Default Value %s\n' % (self.IntToCString(Value, ValueSize), Pcd.DefaultValueFromDec)\r
+            CApp = CApp + '  Value     = %s; // From DEC Default Value %s\n' % (DscBuildData.IntToCString(Value, ValueSize), Pcd.DefaultValueFromDec)\r
             CApp = CApp + '  memcpy (Pcd, Value, %d);\n' % (ValueSize)\r
         for FieldList in [Pcd.DefaultValues]:\r
             if not FieldList:\r
@@ -1692,7 +1706,7 @@ class DscBuildData(PlatformBuildClassObject):
                     # 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 + '  Value     = %s; // From %s Line %d Value %s\n' % (DscBuildData.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
@@ -1701,9 +1715,12 @@ class DscBuildData(PlatformBuildClassObject):
                         CApp = CApp + '  Pcd->%s = %d; // From %s Line %d Value %s\n' % (FieldName, Value, FieldList[FieldName][1], FieldList[FieldName][2], FieldList[FieldName][0])\r
         CApp = CApp + "}\n"\r
         return CApp\r
-    def GenerateDefaultValueAssignStatement(self,Pcd):\r
+\r
+    @staticmethod\r
+    def GenerateDefaultValueAssignStatement(Pcd):\r
         CApp = '  Assign_%s_%s_Default_Value(Pcd);\n' % (Pcd.TokenSpaceGuidCName, Pcd.TokenCName)\r
         return CApp\r
+\r
     def GenerateInitValueFunction(self,Pcd,SkuName,DefaultStoreName):\r
         CApp = "// Value in Dsc for Sku: %s, DefaultStore %s\n" % (SkuName,DefaultStoreName)\r
         CApp = CApp + "void Assign_%s_%s_%s_%s_Value(%s *Pcd){\n" % (Pcd.TokenSpaceGuidCName, Pcd.TokenCName,SkuName,DefaultStoreName,Pcd.DatumType)\r
@@ -1739,7 +1756,7 @@ class DscBuildData(PlatformBuildClassObject):
                     #\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('DEFAULT',{}).get(TAB_DEFAULT_STORES_DEFAULT, Pcd.DefaultValue) if Pcd.DefaultFromDSC else Pcd.DefaultValue)\r
+                        CApp = CApp + '  Value     = %s; // From DSC Default Value %s\n' % (DscBuildData.IntToCString(Value, ValueSize), Pcd.DefaultFromDSC.get('DEFAULT',{}).get(TAB_DEFAULT_STORES_DEFAULT, Pcd.DefaultValue) if Pcd.DefaultFromDSC else Pcd.DefaultValue)\r
                         CApp = CApp + '  memcpy (Pcd, Value, %d);\n' % (ValueSize)\r
                 else:\r
                     if isinstance(Value, str):\r
@@ -1748,7 +1765,7 @@ class DscBuildData(PlatformBuildClassObject):
                     #\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.DscRawValue.get(SkuName,{}).get(DefaultStoreName))\r
+                        CApp = CApp + '  Value     = %s; // From DSC Default Value %s\n' % (DscBuildData.IntToCString(Value, ValueSize), Pcd.DscRawValue.get(SkuName,{}).get(DefaultStoreName))\r
                         CApp = CApp + '  memcpy (Pcd, Value, %d);\n' % (ValueSize)\r
                 continue\r
             if (SkuName,DefaultStoreName) == ('DEFAULT',TAB_DEFAULT_STORES_DEFAULT) or (( (SkuName,'') not in Pcd.ValueChain) and ( (SkuName,DefaultStoreName) not in Pcd.ValueChain )):\r
@@ -1771,7 +1788,7 @@ class DscBuildData(PlatformBuildClassObject):
                     # 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 + '  Value     = %s; // From %s Line %d Value %s\n' % (DscBuildData.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
@@ -1780,9 +1797,12 @@ class DscBuildData(PlatformBuildClassObject):
                             CApp = CApp + '  Pcd->%s = %d; // From %s Line %d Value %s\n' % (FieldName, Value, FieldList[FieldName][1], FieldList[FieldName][2], FieldList[FieldName][0])\r
         CApp = CApp + "}\n"\r
         return CApp\r
-    def GenerateInitValueStatement(self,Pcd,SkuName,DefaultStoreName):\r
+\r
+    @staticmethod\r
+    def GenerateInitValueStatement(Pcd,SkuName,DefaultStoreName):\r
         CApp = '  Assign_%s_%s_%s_%s_Value(Pcd);\n' % (Pcd.TokenSpaceGuidCName, Pcd.TokenCName,SkuName,DefaultStoreName)\r
         return CApp\r
+\r
     def GenerateCommandLineValue(self,Pcd):\r
         CApp = "// Value in CommandLine\n"\r
         CApp = CApp + "void Assign_%s_%s_CommandLine_Value(%s *Pcd){\n" % (Pcd.TokenSpaceGuidCName, Pcd.TokenCName,Pcd.DatumType)\r
@@ -1809,7 +1829,7 @@ class DscBuildData(PlatformBuildClassObject):
                 #\r
                 # Use memcpy() to copy value into field\r
                 #\r
-                    CApp = CApp + '  Value     = %s; // From Command Line.\n' % (self.IntToCString(Value, ValueSize))\r
+                    CApp = CApp + '  Value     = %s; // From Command Line.\n' % (DscBuildData.IntToCString(Value, ValueSize))\r
                     CApp = CApp + '  memcpy (Pcd, Value, %d);\n' % (ValueSize)\r
                 continue\r
             for FieldName in FieldList:\r
@@ -1833,7 +1853,7 @@ class DscBuildData(PlatformBuildClassObject):
                 # 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 + '  Value     = %s; // From %s Line %d Value %s\n' % (DscBuildData.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
@@ -1842,9 +1862,12 @@ class DscBuildData(PlatformBuildClassObject):
                         CApp = CApp + '  Pcd->%s = %d; // From %s Line %d Value %s\n' % (FieldName, Value, FieldList[FieldName][1], FieldList[FieldName][2], FieldList[FieldName][0])\r
         CApp = CApp + "}\n"\r
         return CApp\r
-    def GenerateCommandLineValueStatement(self,Pcd):\r
+\r
+    @staticmethod\r
+    def GenerateCommandLineValueStatement(Pcd):\r
         CApp = '  Assign_%s_%s_CommandLine_Value(Pcd);\n' % (Pcd.TokenSpaceGuidCName, Pcd.TokenCName)\r
         return CApp\r
+\r
     def GenerateInitializeFunc(self, SkuName, DefaultStore, Pcd, InitByteValue, CApp):\r
         OverrideValues = {DefaultStore:""}\r
         if Pcd.SkuOverrideValues:\r
@@ -1884,7 +1907,7 @@ class DscBuildData(PlatformBuildClassObject):
             # in a structure.  The size formula for this case is:\r
             # OFFSET_OF(FlexbleArrayField) + sizeof(FlexibleArray[0]) * (HighestIndex + 1)\r
             #\r
-            CApp = CApp + self.GenerateSizeStatments(Pcd)\r
+            CApp = CApp + DscBuildData.GenerateSizeStatments(Pcd)\r
 \r
             #\r
             # Allocate and zero buffer for the PCD\r
@@ -1903,20 +1926,20 @@ class DscBuildData(PlatformBuildClassObject):
             #\r
             # Assign field values in PCD\r
             #\r
-            CApp = CApp + self.GenerateDefaultValueAssignStatement(Pcd)\r
+            CApp = CApp + DscBuildData.GenerateDefaultValueAssignStatement(Pcd)\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 == TAB_DEFAULT_STORES_DEFAULT else [TAB_DEFAULT_STORES_DEFAULT, 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
+                        CApp = CApp + DscBuildData.GenerateInitValueStatement(Pcd,skuname,defaultstorenameitem)\r
                     if skuname == SkuName:\r
                         break\r
             else:\r
                 CApp = CApp + "// SkuName: %s,  DefaultStoreName: STANDARD \n" % self.SkuIdMgr.SystemSkuId\r
-                CApp = CApp + self.GenerateInitValueStatement(Pcd,self.SkuIdMgr.SystemSkuId,TAB_DEFAULT_STORES_DEFAULT)\r
-            CApp = CApp + self.GenerateCommandLineValueStatement(Pcd)\r
+                CApp = CApp + DscBuildData.GenerateInitValueStatement(Pcd,self.SkuIdMgr.SystemSkuId,TAB_DEFAULT_STORES_DEFAULT)\r
+            CApp = CApp + DscBuildData.GenerateCommandLineValueStatement(Pcd)\r
             #\r
             # Set new PCD value and size\r
             #\r
@@ -2111,11 +2134,11 @@ class DscBuildData(PlatformBuildClassObject):
         Messages = ''\r
         if sys.platform == "win32":\r
             MakeCommand = 'nmake -f %s' % (MakeFileName)\r
-            returncode, StdOut, StdErr = self.ExecuteCommand (MakeCommand)\r
+            returncode, StdOut, StdErr = DscBuildData.ExecuteCommand (MakeCommand)\r
             Messages = StdOut\r
         else:\r
             MakeCommand = 'make -f %s' % (MakeFileName)\r
-            returncode, StdOut, StdErr = self.ExecuteCommand (MakeCommand)\r
+            returncode, StdOut, StdErr = DscBuildData.ExecuteCommand (MakeCommand)\r
             Messages = StdErr\r
         Messages = Messages.split('\n')\r
         MessageGroup = []\r
@@ -2161,9 +2184,9 @@ class DscBuildData(PlatformBuildClassObject):
             else:\r
                 EdkLogger.error('Build', COMMAND_FAILURE, 'Can not execute command: %s' % MakeCommand)\r
 \r
-        if self.NeedUpdateOutput(OutputValueFile, PcdValueInitExe ,InputValueFile):\r
+        if DscBuildData.NeedUpdateOutput(OutputValueFile, PcdValueInitExe ,InputValueFile):\r
             Command = PcdValueInitExe + ' -i %s -o %s' % (InputValueFile, OutputValueFile)\r
-            returncode, StdOut, StdErr = self.ExecuteCommand (Command)\r
+            returncode, StdOut, StdErr = DscBuildData.ExecuteCommand (Command)\r
             if returncode <> 0:\r
                 EdkLogger.warn('Build', COMMAND_FAILURE, 'Can not collect output from command: %s' % Command)\r
 \r
@@ -2178,7 +2201,8 @@ class DscBuildData(PlatformBuildClassObject):
             StructurePcdSet.append((PcdInfo[0],PcdInfo[1], PcdInfo[2], PcdInfo[3], PcdValue[2].strip()))\r
         return StructurePcdSet\r
 \r
-    def NeedUpdateOutput(self,OutputFile, ValueCFile, StructureInput):\r
+    @staticmethod\r
+    def NeedUpdateOutput(OutputFile, ValueCFile, StructureInput):\r
         if not os.path.exists(OutputFile):\r
             return True\r
         if os.stat(OutputFile).st_mtime <= os.stat(ValueCFile).st_mtime:\r
@@ -2288,8 +2312,8 @@ class DscBuildData(PlatformBuildClassObject):
 \r
         return PcdObj\r
 \r
-\r
-    def CompareVarAttr(self, Attr1, Attr2):\r
+    @staticmethod\r
+    def CompareVarAttr(Attr1, Attr2):\r
         if not Attr1 or not Attr2:  # for empty string\r
             return True\r
         Attr1s = [attr.strip() for attr in Attr1.split(",")]\r
@@ -2300,6 +2324,7 @@ class DscBuildData(PlatformBuildClassObject):
             return True\r
         else:\r
             return False\r
+\r
     def CopyDscRawValue(self,Pcd):\r
         if Pcd.DscRawValue is None:\r
             Pcd.DscRawValue = dict()\r
@@ -2427,7 +2452,7 @@ class DscBuildData(PlatformBuildClassObject):
             if (VariableName, VariableGuid) not in VariableAttrs:\r
                 VariableAttrs[(VariableName, VariableGuid)] = VarAttribute\r
             else:\r
-                if not self.CompareVarAttr(VariableAttrs[(VariableName, VariableGuid)], VarAttribute):\r
+                if not DscBuildData.CompareVarAttr(VariableAttrs[(VariableName, VariableGuid)], VarAttribute):\r
                     EdkLogger.error('Build', PCD_VARIABLE_ATTRIBUTES_CONFLICT_ERROR, "The variable %s.%s for DynamicHii PCDs has conflicting attributes [%s] and [%s] " % (VariableGuid, VariableName, VarAttribute, VariableAttrs[(VariableName, VariableGuid)]))\r
 \r
             pcdDecObject = self._DecPcds[PcdCName, TokenSpaceGuid]\r
@@ -2494,7 +2519,7 @@ class DscBuildData(PlatformBuildClassObject):
                         skuobj.DefaultStoreDict[defaultst] = StringToArray(skuobj.DefaultStoreDict[defaultst])\r
                 pcd.DefaultValue = StringToArray(pcd.DefaultValue)\r
                 pcd.MaxDatumSize = str(MaxSize)\r
-        rt, invalidhii = self.CheckVariableNameAssignment(Pcds)\r
+        rt, invalidhii = DscBuildData.CheckVariableNameAssignment(Pcds)\r
         if not rt:\r
             invalidpcd = ",".join(invalidhii)\r
             EdkLogger.error('build', PCD_VARIABLE_INFO_ERROR, Message='The same HII PCD must map to the same EFI variable for all SKUs', File=self.MetaFile, ExtraData=invalidpcd)\r
@@ -2503,7 +2528,8 @@ class DscBuildData(PlatformBuildClassObject):
 \r
         return Pcds\r
 \r
-    def CheckVariableNameAssignment(self,Pcds):\r
+    @staticmethod\r
+    def CheckVariableNameAssignment(Pcds):\r
         invalidhii = []\r
         for pcdname in Pcds:\r
             pcd = Pcds[pcdname]\r