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:
@ -46,6 +46,7 @@ from Common.LongFilePathSupport import OpenLongFilePath as open
|
|||||||
import Common.GlobalData as GlobalData
|
import Common.GlobalData as GlobalData
|
||||||
from DepexSection import DepexSection
|
from DepexSection import DepexSection
|
||||||
from Common.Misc import SaveFileOnChange
|
from Common.Misc import SaveFileOnChange
|
||||||
|
from Common.Expression import *
|
||||||
|
|
||||||
## generate FFS from INF
|
## generate FFS from INF
|
||||||
#
|
#
|
||||||
@ -279,6 +280,20 @@ class FfsInfStatement(FfsInfStatementClassObject):
|
|||||||
|
|
||||||
if not DscOverride and not FdfOverride and not BuildOptionOverride:
|
if not DscOverride and not FdfOverride and not BuildOptionOverride:
|
||||||
continue
|
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
|
# Check value, if value are equal, no need to patch
|
||||||
if Pcd.DatumType == "VOID*":
|
if Pcd.DatumType == "VOID*":
|
||||||
if Pcd.DefaultValue == DefaultValue or DefaultValue in [None, '']:
|
if Pcd.DefaultValue == DefaultValue or DefaultValue in [None, '']:
|
||||||
|
@ -165,6 +165,7 @@ def PatchBinaryFile(FileName, ValueOffset, TypeName, ValueString, MaxSize=0):
|
|||||||
Index = 0
|
Index = 0
|
||||||
try:
|
try:
|
||||||
for ByteString in ValueList:
|
for ByteString in ValueList:
|
||||||
|
ByteString = ByteString.strip()
|
||||||
if ByteString.upper().startswith('0X'):
|
if ByteString.upper().startswith('0X'):
|
||||||
ByteValue = int(ByteString, 16)
|
ByteValue = int(ByteString, 16)
|
||||||
else:
|
else:
|
||||||
|
Reference in New Issue
Block a user