Re: [edk2] [Patch] BaseTools: Fixed Pcd from command line issue.
Reviewed-by: Liming Gao <liming@intel.com> >-Original Message- >From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of >BobCF >Sent: Thursday, March 08, 2018 1:56 PM >To: edk2-devel@lists.01.org >Cc: Gao, Liming <liming@intel.com> >Subject: [edk2] [Patch] BaseTools: Fixed Pcd from command line issue. > >Save the pcd command line value in Pcd object > >Contributed-under: TianoCore Contribution Agreement 1.1 >Signed-off-by: Bob Feng <bob.c.f...@intel.com> >Cc: Liming Gao <liming@intel.com> >--- > BaseTools/Source/Python/AutoGen/GenC.py| 15 +++ > BaseTools/Source/Python/AutoGen/GenMake.py | 28 +++--- >- > .../Source/Python/Workspace/BuildClassObject.py| 4 +-- > BaseTools/Source/Python/Workspace/DscBuildData.py | 31 +++--- > > 4 files changed, 31 insertions(+), 47 deletions(-) > >diff --git a/BaseTools/Source/Python/AutoGen/GenC.py >b/BaseTools/Source/Python/AutoGen/GenC.py >index 3e98506cc8..481c4dda14 100644 >--- a/BaseTools/Source/Python/AutoGen/GenC.py >+++ b/BaseTools/Source/Python/AutoGen/GenC.py >@@ -914,15 +914,12 @@ def CreateModulePcdCode(Info, AutoGenC, >AutoGenH, Pcd): > PcdTokenName = '_PCD_TOKEN_' + TokenCName > PatchPcdSizeTokenName = '_PCD_PATCHABLE_' + TokenCName +'_SIZE' > PatchPcdSizeVariableName = '_gPcd_BinaryPatch_Size_' + TokenCName > FixPcdSizeTokenName = '_PCD_SIZE_' + TokenCName > >-if GlobalData.BuildOptionPcd: >-for PcdItem in GlobalData.BuildOptionPcd: >-if (Pcd.TokenSpaceGuidCName, TokenCName) == (PcdItem[0], >PcdItem[1]): >-Pcd.DefaultValue = PcdItem[2] >-break >+if Pcd.PcdValueFromComm: >+Pcd.DefaultValue = Pcd.PcdValueFromComm > > if Pcd.Type in gDynamicExPcd: > TokenNumber = int(Pcd.TokenValue, 0) > # Add TokenSpaceGuidValue value to PcdTokenName to discriminate the >DynamicEx PCDs with > # different Guids but same TokenCName >@@ -1213,16 +1210,12 @@ def CreateLibraryPcdCode(Info, AutoGenC, >AutoGenH, Pcd): > PcdTokenName = '_PCD_TOKEN_' + TokenCName > FixPcdSizeTokenName = '_PCD_SIZE_' + TokenCName > PatchPcdSizeTokenName = '_PCD_PATCHABLE_' + TokenCName +'_SIZE' > PatchPcdSizeVariableName = '_gPcd_BinaryPatch_Size_' + TokenCName > >-if GlobalData.BuildOptionPcd: >-for PcdItem in GlobalData.BuildOptionPcd: >-if (Pcd.TokenSpaceGuidCName, TokenCName) == (PcdItem[0], >PcdItem[1]): >-Pcd.DefaultValue = PcdItem[2] >-break >- >+if Pcd.PcdValueFromComm: >+Pcd.DefaultValue = Pcd.PcdValueFromComm > # > # Write PCDs > # > if Pcd.Type in gDynamicExPcd: > TokenNumber = int(Pcd.TokenValue, 0) >diff --git a/BaseTools/Source/Python/AutoGen/GenMake.py >b/BaseTools/Source/Python/AutoGen/GenMake.py >index 1b0cf17e25..60bd625cd2 100644 >--- a/BaseTools/Source/Python/AutoGen/GenMake.py >+++ b/BaseTools/Source/Python/AutoGen/GenMake.py >@@ -1549,29 +1549,19 @@ class TopLevelMakefile(BuildFile): > if GlobalData.gEnableGenfdsMultiThread: > ExtraOption += " --genfds-multi-thread" > if GlobalData.gIgnoreSource: > ExtraOption += " --ignore-sources" > >-for index, option in enumerate(GlobalData.gCommand): >-if "--pcd" == option and GlobalData.gCommand[index+1]: >-pcdName, pcdValue = GlobalData.gCommand[index+1].split('=') >-for Item in GlobalData.BuildOptionPcd: >-if '.'.join(Item[0:2]) == pcdName: >-pcdValue = Item[2] >-if pcdValue.startswith('L') or >pcdValue.startswith('"'): >-pcdValue, Size = ParseFieldValue(pcdValue) >-NewVal = '{' >-for S in range(Size): >-NewVal = NewVal + '0x%02X' % ((pcdValue >> S >* 8) & 0xff) >-NewVal += ',' >-pcdValue = NewVal[:-1] + '}' >-break >-if pcdValue.startswith('{'): >-pcdValue = 'H' + '"' + pcdValue + '"' >-ExtraOption += " --pcd " + pcdName + '=' + pcdValue >-else: >-ExtraOption += " --pcd " + GlobalData.gCommand[index+1] >+for pcd in GlobalData.BuildOptionPcd: >+if pcd[2]: >+pcdname = '.'.join(pcd[0:3]) >+else: >+pcdname = '.'.j
[edk2] [Patch] BaseTools: Fixed Pcd from command line issue.
Save the pcd command line value in Pcd object Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Bob FengCc: Liming Gao --- BaseTools/Source/Python/AutoGen/GenC.py| 15 +++ BaseTools/Source/Python/AutoGen/GenMake.py | 28 +++ .../Source/Python/Workspace/BuildClassObject.py| 4 +-- BaseTools/Source/Python/Workspace/DscBuildData.py | 31 +++--- 4 files changed, 31 insertions(+), 47 deletions(-) diff --git a/BaseTools/Source/Python/AutoGen/GenC.py b/BaseTools/Source/Python/AutoGen/GenC.py index 3e98506cc8..481c4dda14 100644 --- a/BaseTools/Source/Python/AutoGen/GenC.py +++ b/BaseTools/Source/Python/AutoGen/GenC.py @@ -914,15 +914,12 @@ def CreateModulePcdCode(Info, AutoGenC, AutoGenH, Pcd): PcdTokenName = '_PCD_TOKEN_' + TokenCName PatchPcdSizeTokenName = '_PCD_PATCHABLE_' + TokenCName +'_SIZE' PatchPcdSizeVariableName = '_gPcd_BinaryPatch_Size_' + TokenCName FixPcdSizeTokenName = '_PCD_SIZE_' + TokenCName -if GlobalData.BuildOptionPcd: -for PcdItem in GlobalData.BuildOptionPcd: -if (Pcd.TokenSpaceGuidCName, TokenCName) == (PcdItem[0], PcdItem[1]): -Pcd.DefaultValue = PcdItem[2] -break +if Pcd.PcdValueFromComm: +Pcd.DefaultValue = Pcd.PcdValueFromComm if Pcd.Type in gDynamicExPcd: TokenNumber = int(Pcd.TokenValue, 0) # Add TokenSpaceGuidValue value to PcdTokenName to discriminate the DynamicEx PCDs with # different Guids but same TokenCName @@ -1213,16 +1210,12 @@ def CreateLibraryPcdCode(Info, AutoGenC, AutoGenH, Pcd): PcdTokenName = '_PCD_TOKEN_' + TokenCName FixPcdSizeTokenName = '_PCD_SIZE_' + TokenCName PatchPcdSizeTokenName = '_PCD_PATCHABLE_' + TokenCName +'_SIZE' PatchPcdSizeVariableName = '_gPcd_BinaryPatch_Size_' + TokenCName -if GlobalData.BuildOptionPcd: -for PcdItem in GlobalData.BuildOptionPcd: -if (Pcd.TokenSpaceGuidCName, TokenCName) == (PcdItem[0], PcdItem[1]): -Pcd.DefaultValue = PcdItem[2] -break - +if Pcd.PcdValueFromComm: +Pcd.DefaultValue = Pcd.PcdValueFromComm # # Write PCDs # if Pcd.Type in gDynamicExPcd: TokenNumber = int(Pcd.TokenValue, 0) diff --git a/BaseTools/Source/Python/AutoGen/GenMake.py b/BaseTools/Source/Python/AutoGen/GenMake.py index 1b0cf17e25..60bd625cd2 100644 --- a/BaseTools/Source/Python/AutoGen/GenMake.py +++ b/BaseTools/Source/Python/AutoGen/GenMake.py @@ -1549,29 +1549,19 @@ class TopLevelMakefile(BuildFile): if GlobalData.gEnableGenfdsMultiThread: ExtraOption += " --genfds-multi-thread" if GlobalData.gIgnoreSource: ExtraOption += " --ignore-sources" -for index, option in enumerate(GlobalData.gCommand): -if "--pcd" == option and GlobalData.gCommand[index+1]: -pcdName, pcdValue = GlobalData.gCommand[index+1].split('=') -for Item in GlobalData.BuildOptionPcd: -if '.'.join(Item[0:2]) == pcdName: -pcdValue = Item[2] -if pcdValue.startswith('L') or pcdValue.startswith('"'): -pcdValue, Size = ParseFieldValue(pcdValue) -NewVal = '{' -for S in range(Size): -NewVal = NewVal + '0x%02X' % ((pcdValue >> S * 8) & 0xff) -NewVal += ',' -pcdValue = NewVal[:-1] + '}' -break -if pcdValue.startswith('{'): -pcdValue = 'H' + '"' + pcdValue + '"' -ExtraOption += " --pcd " + pcdName + '=' + pcdValue -else: -ExtraOption += " --pcd " + GlobalData.gCommand[index+1] +for pcd in GlobalData.BuildOptionPcd: +if pcd[2]: +pcdname = '.'.join(pcd[0:3]) +else: +pcdname = '.'.join(pcd[0:2]) +if pcd[3].startswith('{'): +ExtraOption += " --pcd " + pcdname + '=' + 'H' + '"' + pcd[3] + '"' +else: +ExtraOption += " --pcd " + pcdname + '=' + pcd[3] MakefileName = self._FILE_NAME_[self._FileType] SubBuildCommandList = [] for A in PlatformInfo.ArchList: Command = self._MAKE_TEMPLATE_[self._FileType] % {"file":os.path.join("$(BUILD_DIR)", A, MakefileName)} diff --git a/BaseTools/Source/Python/Workspace/BuildClassObject.py b/BaseTools/Source/Python/Workspace/BuildClassObject.py index 711ba492ef..1352fa21c8 100644 --- a/BaseTools/Source/Python/Workspace/BuildClassObject.py +++ b/BaseTools/Source/Python/Workspace/BuildClassObject.py @@ -66,10 +66,11 @@ class PcdClassObject(object): self.expressions =
[edk2] [Patch] BaseTools: Fixed Pcd from command line issue.
Save the pcd command line value in Pcd object Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Bob FengCc: Liming Gao --- BaseTools/Source/Python/AutoGen/GenC.py| 15 +++ BaseTools/Source/Python/AutoGen/GenMake.py | 25 + .../Source/Python/Workspace/BuildClassObject.py| 4 +-- BaseTools/Source/Python/Workspace/DscBuildData.py | 31 +++--- 4 files changed, 28 insertions(+), 47 deletions(-) diff --git a/BaseTools/Source/Python/AutoGen/GenC.py b/BaseTools/Source/Python/AutoGen/GenC.py index 3e98506cc8..481c4dda14 100644 --- a/BaseTools/Source/Python/AutoGen/GenC.py +++ b/BaseTools/Source/Python/AutoGen/GenC.py @@ -914,15 +914,12 @@ def CreateModulePcdCode(Info, AutoGenC, AutoGenH, Pcd): PcdTokenName = '_PCD_TOKEN_' + TokenCName PatchPcdSizeTokenName = '_PCD_PATCHABLE_' + TokenCName +'_SIZE' PatchPcdSizeVariableName = '_gPcd_BinaryPatch_Size_' + TokenCName FixPcdSizeTokenName = '_PCD_SIZE_' + TokenCName -if GlobalData.BuildOptionPcd: -for PcdItem in GlobalData.BuildOptionPcd: -if (Pcd.TokenSpaceGuidCName, TokenCName) == (PcdItem[0], PcdItem[1]): -Pcd.DefaultValue = PcdItem[2] -break +if Pcd.PcdValueFromComm: +Pcd.DefaultValue = Pcd.PcdValueFromComm if Pcd.Type in gDynamicExPcd: TokenNumber = int(Pcd.TokenValue, 0) # Add TokenSpaceGuidValue value to PcdTokenName to discriminate the DynamicEx PCDs with # different Guids but same TokenCName @@ -1213,16 +1210,12 @@ def CreateLibraryPcdCode(Info, AutoGenC, AutoGenH, Pcd): PcdTokenName = '_PCD_TOKEN_' + TokenCName FixPcdSizeTokenName = '_PCD_SIZE_' + TokenCName PatchPcdSizeTokenName = '_PCD_PATCHABLE_' + TokenCName +'_SIZE' PatchPcdSizeVariableName = '_gPcd_BinaryPatch_Size_' + TokenCName -if GlobalData.BuildOptionPcd: -for PcdItem in GlobalData.BuildOptionPcd: -if (Pcd.TokenSpaceGuidCName, TokenCName) == (PcdItem[0], PcdItem[1]): -Pcd.DefaultValue = PcdItem[2] -break - +if Pcd.PcdValueFromComm: +Pcd.DefaultValue = Pcd.PcdValueFromComm # # Write PCDs # if Pcd.Type in gDynamicExPcd: TokenNumber = int(Pcd.TokenValue, 0) diff --git a/BaseTools/Source/Python/AutoGen/GenMake.py b/BaseTools/Source/Python/AutoGen/GenMake.py index 1b0cf17e25..0a3cc32155 100644 --- a/BaseTools/Source/Python/AutoGen/GenMake.py +++ b/BaseTools/Source/Python/AutoGen/GenMake.py @@ -1549,29 +1549,16 @@ class TopLevelMakefile(BuildFile): if GlobalData.gEnableGenfdsMultiThread: ExtraOption += " --genfds-multi-thread" if GlobalData.gIgnoreSource: ExtraOption += " --ignore-sources" -for index, option in enumerate(GlobalData.gCommand): -if "--pcd" == option and GlobalData.gCommand[index+1]: -pcdName, pcdValue = GlobalData.gCommand[index+1].split('=') -for Item in GlobalData.BuildOptionPcd: -if '.'.join(Item[0:2]) == pcdName: -pcdValue = Item[2] -if pcdValue.startswith('L') or pcdValue.startswith('"'): -pcdValue, Size = ParseFieldValue(pcdValue) -NewVal = '{' -for S in range(Size): -NewVal = NewVal + '0x%02X' % ((pcdValue >> S * 8) & 0xff) -NewVal += ',' -pcdValue = NewVal[:-1] + '}' -break -if pcdValue.startswith('{'): -pcdValue = 'H' + '"' + pcdValue + '"' -ExtraOption += " --pcd " + pcdName + '=' + pcdValue -else: -ExtraOption += " --pcd " + GlobalData.gCommand[index+1] +for pcd in GlobalData.BuildOptionPcd: +if pcd[2]: +pcdname = '.'.join(pcd[0:3]) +else: +pcdname = '.'.join(pcd[0:2]) +ExtraOption += " --pcd " + pcdname + '=' + pcd[3] MakefileName = self._FILE_NAME_[self._FileType] SubBuildCommandList = [] for A in PlatformInfo.ArchList: Command = self._MAKE_TEMPLATE_[self._FileType] % {"file":os.path.join("$(BUILD_DIR)", A, MakefileName)} diff --git a/BaseTools/Source/Python/Workspace/BuildClassObject.py b/BaseTools/Source/Python/Workspace/BuildClassObject.py index 711ba492ef..1352fa21c8 100644 --- a/BaseTools/Source/Python/Workspace/BuildClassObject.py +++ b/BaseTools/Source/Python/Workspace/BuildClassObject.py @@ -66,10 +66,11 @@ class PcdClassObject(object): self.expressions = expressions self.DscDefaultValue = None self.DscRawValue = None if IsDsc: self.DscDefaultValue = Value +