BaseTools: Latter full value should overwrite the former field value.
For structure Pcd, the latter full assign value in commandLine should override the former field assign value. For example in commandLine, build --pcd Token.pcd.field="haha" --pcd Token.pcd=H"{0x01,0x02}", the former field value "haha" will be ignored and overwrite by the latter full value "{0x01,0x02}". Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: ZhiqiangX Zhao <zhiqiangx.zhao@intel.com> Cc: Liming Gao <liming.gao@intel.com> Cc: Yonghong Zhu <yonghong.zhu@intel.com> Cc: Bob Feng <bob.c.feng@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
committed by
Liming Gao
parent
b602265d55
commit
0fd04efd01
@ -1067,6 +1067,23 @@ class DscBuildData(PlatformBuildClassObject):
|
||||
PcdItem = BuildData.Pcds[key]
|
||||
if (TokenSpaceGuidCName, TokenCName) == (PcdItem.TokenSpaceGuidCName, PcdItem.TokenCName) and FieldName =="":
|
||||
PcdItem.DefaultValue = pcdvalue
|
||||
#In command line, the latter full assign value in commandLine should override the former field assign value.
|
||||
#For example, --pcd Token.pcd.field="" --pcd Token.pcd=H"{}"
|
||||
delete_assign = []
|
||||
field_assign = {}
|
||||
if GlobalData.BuildOptionPcd:
|
||||
for pcdTuple in GlobalData.BuildOptionPcd:
|
||||
TokenSpaceGuid, Token, Field = pcdTuple[0], pcdTuple[1], pcdTuple[2]
|
||||
if Field:
|
||||
if (TokenSpaceGuid, Token) not in field_assign:
|
||||
field_assign[TokenSpaceGuid, Token] = []
|
||||
field_assign[TokenSpaceGuid, Token].append(pcdTuple)
|
||||
else:
|
||||
if (TokenSpaceGuid, Token) in field_assign:
|
||||
delete_assign.extend(field_assign[TokenSpaceGuid, Token])
|
||||
field_assign[TokenSpaceGuid, Token] = []
|
||||
for item in delete_assign:
|
||||
GlobalData.BuildOptionPcd.remove(item)
|
||||
|
||||
@staticmethod
|
||||
def HandleFlexiblePcd(TokenSpaceGuidCName, TokenCName, PcdValue, PcdDatumType, GuidDict, FieldName=''):
|
||||
|
Reference in New Issue
Block a user