mirror of https://github.com/acidanthera/audk.git
BaseTools: DSC Components section support flexible PCD
DSC Components section support flexible PCD, and for binary driver, we need patch this value. Update the split char ',' not ', ' because some value may have space, while others may not have this space. Cc: Liming Gao <liming.gao@intel.com> Cc: Yonghong Zhu <yonghong.zhu@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Yunhua Feng <yunhuax.feng@intel.com> Signed-off-by: Yonghong Zhu <yonghong.zhu@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
parent
0e2a5749d8
commit
0537f332c9
|
@ -46,6 +46,7 @@ from Common.LongFilePathSupport import OpenLongFilePath as open
|
|||
import Common.GlobalData as GlobalData
|
||||
from DepexSection import DepexSection
|
||||
from Common.Misc import SaveFileOnChange
|
||||
from Common.Expression import *
|
||||
|
||||
## generate FFS from INF
|
||||
#
|
||||
|
@ -279,6 +280,20 @@ class FfsInfStatement(FfsInfStatementClassObject):
|
|||
|
||||
if not DscOverride and not FdfOverride and not BuildOptionOverride:
|
||||
continue
|
||||
|
||||
# Support Flexible PCD format
|
||||
if DefaultValue:
|
||||
try:
|
||||
DefaultValue = ValueExpressionEx(DefaultValue, Pcd.DatumType, Platform._GuidDict)(True)
|
||||
except BadExpression:
|
||||
EdkLogger.error("GenFds", GENFDS_ERROR, 'PCD [%s.%s] Value "%s"' %(Pcd.TokenSpaceGuidCName, Pcd.TokenCName, DefaultValue), File=self.InfFileName)
|
||||
|
||||
if Pcd.DefaultValue:
|
||||
try:
|
||||
Pcd.DefaultValue = ValueExpressionEx(Pcd.DefaultValue, Pcd.DatumType, Platform._GuidDict)(True)
|
||||
except BadExpression:
|
||||
EdkLogger.error("GenFds", GENFDS_ERROR, 'PCD [%s.%s] Value "%s"' %(Pcd.TokenSpaceGuidCName, Pcd.TokenCName, Pcd.DefaultValue),File=self.InfFileName)
|
||||
|
||||
# Check value, if value are equal, no need to patch
|
||||
if Pcd.DatumType == "VOID*":
|
||||
if Pcd.DefaultValue == DefaultValue or DefaultValue in [None, '']:
|
||||
|
|
|
@ -161,10 +161,11 @@ def PatchBinaryFile(FileName, ValueOffset, TypeName, ValueString, MaxSize=0):
|
|||
#
|
||||
# Patch {0x1, 0x2, ...} byte by byte
|
||||
#
|
||||
ValueList = ValueString[1 : len(ValueString) - 1].split(', ')
|
||||
ValueList = ValueString[1 : len(ValueString) - 1].split(',')
|
||||
Index = 0
|
||||
try:
|
||||
for ByteString in ValueList:
|
||||
ByteString = ByteString.strip()
|
||||
if ByteString.upper().startswith('0X'):
|
||||
ByteValue = int(ByteString, 16)
|
||||
else:
|
||||
|
|
Loading…
Reference in New Issue