Index = Index + 1\r
if Index == 1:\r
AutoGenH.Append('\n#define __PCD_%s_VAL_CMP(GuidPtr) (' % (Pcd.TokenCName))\r
+ AutoGenH.Append('\\\n (GuidPtr == NULL) ? 0:')\r
AutoGenH.Append('\\\n COMPAREGUID (GuidPtr, &%s) ? _PCD_TOKEN_%s_%s:' \r
% (Pcd.TokenSpaceGuidCName, Pcd.TokenSpaceGuidCName, Pcd.TokenCName))\r
else:\r
% (Pcd.TokenCName, Pcd.TokenCName, Pcd.TokenCName, Pcd.TokenCName))\r
TokenCNameList.append(TokenCName)\r
\r
+def GetPcdSize(Pcd):\r
+ if Pcd.DatumType == 'VOID*':\r
+ Value = Pcd.DefaultValue\r
+ if Value in [None, '']:\r
+ return 1\r
+ elif Value[0] == 'L':\r
+ return (len(Value) - 2) * 2\r
+ elif Value[0] == '{':\r
+ return len(Value.split(','))\r
+ else:\r
+ return len(Value) - 1\r
+ if Pcd.DatumType == 'UINT64':\r
+ return 8\r
+ if Pcd.DatumType == 'UINT32':\r
+ return 4\r
+ if Pcd.DatumType == 'UINT16':\r
+ return 2\r
+ if Pcd.DatumType == 'UINT8':\r
+ return 1\r
+ if Pcd.DatumType == 'BOOLEAN':\r
+ return 1\r
+\r
+\r
## Create code for module PCDs\r
#\r
# @param Info The ModuleAutoGen object\r
# Write PCDs\r
#\r
PcdTokenName = '_PCD_TOKEN_' + Pcd.TokenCName\r
+ PatchPcdSizeTokenName = '_PCD_PATCHABLE_' + Pcd.TokenCName +'_SIZE'\r
+ PatchPcdSizeVariableName = '_gPcd_BinaryPatch_Size_' + Pcd.TokenCName\r
+ FixPcdSizeTokenName = '_PCD_SIZE_' + Pcd.TokenCName\r
+ \r
if Pcd.Type in gDynamicExPcd:\r
TokenNumber = int(Pcd.TokenValue, 0)\r
# Add TokenSpaceGuidValue value to PcdTokenName to discriminate the DynamicEx PCDs with \r
GetModeName = '_PCD_GET_MODE_' + gDatumSizeStringDatabaseH[Pcd.DatumType] + '_' + Pcd.TokenCName\r
SetModeName = '_PCD_SET_MODE_' + gDatumSizeStringDatabaseH[Pcd.DatumType] + '_' + Pcd.TokenCName\r
SetModeStatusName = '_PCD_SET_MODE_' + gDatumSizeStringDatabaseH[Pcd.DatumType] + '_S_' + Pcd.TokenCName\r
-\r
+ GetModeSizeName = '_PCD_GET_MODE_SIZE' + '_' + Pcd.TokenCName\r
+ \r
PcdExCNameList = []\r
if Pcd.Type in gDynamicExPcd:\r
if Info.IsLibrary:\r
AutoGenH.Append('// Disabled the macros, as PcdToken and PcdGet/Set are not allowed in the case that more than one DynamicEx Pcds are different Guids but same CName.\n')\r
AutoGenH.Append('// #define %s %s\n' % (PcdTokenName, PcdExTokenName))\r
AutoGenH.Append('// #define %s LibPcdGetEx%s(&%s, %s)\n' % (GetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))\r
+ AutoGenH.Append('// #define %s LibPcdGetExSize(&%s, %s)\n' % (GetModeSizeName,Pcd.TokenSpaceGuidCName, PcdTokenName))\r
if Pcd.DatumType == 'VOID*':\r
AutoGenH.Append('// #define %s(SizeOfBuffer, Buffer) LibPcdSetEx%s(&%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))\r
AutoGenH.Append('// #define %s(SizeOfBuffer, Buffer) LibPcdSetEx%sS(&%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeStatusName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))\r
else:\r
AutoGenH.Append('#define %s %s\n' % (PcdTokenName, PcdExTokenName))\r
AutoGenH.Append('#define %s LibPcdGetEx%s(&%s, %s)\n' % (GetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))\r
+ AutoGenH.Append('#define %s LibPcdGetExSize(&%s, %s)\n' % (GetModeSizeName,Pcd.TokenSpaceGuidCName, PcdTokenName))\r
if Pcd.DatumType == 'VOID*':\r
AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPcdSetEx%s(&%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))\r
AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPcdSetEx%sS(&%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeStatusName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))\r
AutoGenH.Append('#define %s(Value) LibPcdSetEx%s(&%s, %s, (Value))\n' % (SetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))\r
AutoGenH.Append('#define %s(Value) LibPcdSetEx%sS(&%s, %s, (Value))\n' % (SetModeStatusName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))\r
elif Pcd.Type in gDynamicPcd:\r
- AutoGenH.Append('#define %s LibPcdGet%s(%s)\n' % (GetModeName, DatumSizeLib, PcdTokenName))\r
- if Pcd.DatumType == 'VOID*':\r
- AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPcdSet%s(%s, (SizeOfBuffer), (Buffer))\n' %(SetModeName, DatumSizeLib, PcdTokenName))\r
- AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPcdSet%sS(%s, (SizeOfBuffer), (Buffer))\n' % (SetModeStatusName, DatumSizeLib, PcdTokenName))\r
+ PcdList = []\r
+ PcdCNameList = []\r
+ PcdList.extend(Info.LibraryPcdList)\r
+ PcdList.extend(Info.ModulePcdList)\r
+ for PcdModule in PcdList:\r
+ if PcdModule.Type in gDynamicPcd:\r
+ PcdCNameList.append(PcdModule.TokenCName)\r
+ if PcdCNameList.count(Pcd.TokenCName) > 1:\r
+ EdkLogger.error("build", AUTOGEN_ERROR, "More than one Dynamic Pcds [%s] are different Guids but same CName. They need to be changed to DynamicEx type to avoid the confliction.\n" % (Pcd.TokenCName), ExtraData="[%s]" % str(Info.MetaFile.Path))\r
else:\r
- AutoGenH.Append('#define %s(Value) LibPcdSet%s(%s, (Value))\n' % (SetModeName, DatumSizeLib, PcdTokenName))\r
- AutoGenH.Append('#define %s(Value) LibPcdSet%sS(%s, (Value))\n' % (SetModeStatusName, DatumSizeLib, PcdTokenName))\r
+ AutoGenH.Append('#define %s LibPcdGet%s(%s)\n' % (GetModeName, DatumSizeLib, PcdTokenName))\r
+ AutoGenH.Append('#define %s LibPcdGetSize(%s)\n' % (GetModeSizeName, PcdTokenName))\r
+ if Pcd.DatumType == 'VOID*':\r
+ AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPcdSet%s(%s, (SizeOfBuffer), (Buffer))\n' %(SetModeName, DatumSizeLib, PcdTokenName))\r
+ AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPcdSet%sS(%s, (SizeOfBuffer), (Buffer))\n' % (SetModeStatusName, DatumSizeLib, PcdTokenName))\r
+ else:\r
+ AutoGenH.Append('#define %s(Value) LibPcdSet%s(%s, (Value))\n' % (SetModeName, DatumSizeLib, PcdTokenName))\r
+ AutoGenH.Append('#define %s(Value) LibPcdSet%sS(%s, (Value))\n' % (SetModeStatusName, DatumSizeLib, PcdTokenName))\r
else:\r
PcdVariableName = '_gPcd_' + gItemTypeStringDatabase[Pcd.Type] + '_' + Pcd.TokenCName\r
Const = 'const'\r
# For unicode, UINT16 array will be generated, so the alignment of unicode is guaranteed.\r
#\r
if Unicode:\r
- AutoGenH.Append('#define _PCD_PATCHABLE_%s_SIZE %s\n' % (Pcd.TokenCName, Pcd.MaxDatumSize))\r
AutoGenH.Append('#define %s %s%s\n' %(PcdValueName, Type, PcdVariableName))\r
AutoGenC.Append('GLOBAL_REMOVE_IF_UNREFERENCED %s UINT16 %s%s = %s;\n' % (Const, PcdVariableName, Array, Value))\r
AutoGenH.Append('extern %s UINT16 %s%s;\n' %(Const, PcdVariableName, Array))\r
AutoGenH.Append('#define %s %s%s\n' %(GetModeName, Type, PcdVariableName))\r
else:\r
- AutoGenH.Append('#define _PCD_PATCHABLE_%s_SIZE %s\n' % (Pcd.TokenCName, Pcd.MaxDatumSize))\r
AutoGenH.Append('#define %s %s%s\n' %(PcdValueName, Type, PcdVariableName))\r
AutoGenC.Append('GLOBAL_REMOVE_IF_UNREFERENCED %s UINT8 %s%s = %s;\n' % (Const, PcdVariableName, Array, Value))\r
AutoGenH.Append('extern %s UINT8 %s%s;\n' %(Const, PcdVariableName, Array))\r
AutoGenH.Append('#define %s %s%s\n' %(GetModeName, Type, PcdVariableName))\r
+ \r
+ PcdDataSize = GetPcdSize(Pcd)\r
+ if Pcd.Type == TAB_PCDS_FIXED_AT_BUILD:\r
+ AutoGenH.Append('#define %s %s\n' % (FixPcdSizeTokenName, PcdDataSize))\r
+ AutoGenH.Append('#define %s %s \n' % (GetModeSizeName,FixPcdSizeTokenName))\r
+ \r
+ if Pcd.Type == TAB_PCDS_PATCHABLE_IN_MODULE:\r
+ AutoGenH.Append('#define %s %s\n' % (PatchPcdSizeTokenName, Pcd.MaxDatumSize))\r
+ AutoGenH.Append('#define %s %s \n' % (GetModeSizeName,PatchPcdSizeVariableName))\r
+ AutoGenH.Append('extern UINTN %s; \n' % PatchPcdSizeVariableName)\r
+ AutoGenC.Append('GLOBAL_REMOVE_IF_UNREFERENCED UINTN %s = %s;\n' % (PatchPcdSizeVariableName,PcdDataSize))\r
elif Pcd.Type == TAB_PCDS_PATCHABLE_IN_MODULE:\r
AutoGenH.Append('#define %s %s\n' %(PcdValueName, Value))\r
AutoGenC.Append('volatile %s %s %s = %s;\n' %(Const, Pcd.DatumType, PcdVariableName, PcdValueName))\r
AutoGenH.Append('extern volatile %s %s %s%s;\n' % (Const, Pcd.DatumType, PcdVariableName, Array))\r
AutoGenH.Append('#define %s %s%s\n' % (GetModeName, Type, PcdVariableName))\r
+ \r
+ PcdDataSize = GetPcdSize(Pcd)\r
+ AutoGenH.Append('#define %s %s\n' % (PatchPcdSizeTokenName, PcdDataSize))\r
+ \r
+ AutoGenH.Append('#define %s %s \n' % (GetModeSizeName,PatchPcdSizeVariableName))\r
+ AutoGenH.Append('extern UINTN %s; \n' % PatchPcdSizeVariableName)\r
+ AutoGenC.Append('GLOBAL_REMOVE_IF_UNREFERENCED UINTN %s = %s;\n' % (PatchPcdSizeVariableName,PcdDataSize))\r
else:\r
+ PcdDataSize = GetPcdSize(Pcd)\r
+ AutoGenH.Append('#define %s %s\n' % (FixPcdSizeTokenName, PcdDataSize))\r
+ AutoGenH.Append('#define %s %s \n' % (GetModeSizeName,FixPcdSizeTokenName))\r
+ \r
AutoGenH.Append('#define %s %s\n' %(PcdValueName, Value))\r
AutoGenC.Append('GLOBAL_REMOVE_IF_UNREFERENCED %s %s %s = %s;\n' %(Const, Pcd.DatumType, PcdVariableName, PcdValueName))\r
AutoGenH.Append('extern %s %s %s%s;\n' % (Const, Pcd.DatumType, PcdVariableName, Array))\r
\r
if Pcd.Type == TAB_PCDS_PATCHABLE_IN_MODULE:\r
if Pcd.DatumType == 'VOID*':\r
- AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPatchPcdSetPtr(_gPcd_BinaryPatch_%s, (UINTN)_PCD_PATCHABLE_%s_SIZE, (SizeOfBuffer), (Buffer))\n' % (SetModeName, Pcd.TokenCName, Pcd.TokenCName))\r
- AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPatchPcdSetPtrS(_gPcd_BinaryPatch_%s, (UINTN)_PCD_PATCHABLE_%s_SIZE, (SizeOfBuffer), (Buffer))\n' % (SetModeStatusName, Pcd.TokenCName, Pcd.TokenCName))\r
+ AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPatchPcdSetPtrAndSize((VOID *)_gPcd_BinaryPatch_%s, &_gPcd_BinaryPatch_Size_%s, (UINTN)_PCD_PATCHABLE_%s_SIZE, (SizeOfBuffer), (Buffer))\n' % (SetModeName, Pcd.TokenCName, Pcd.TokenCName, Pcd.TokenCName))\r
+ AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPatchPcdSetPtrAndSizeS((VOID *)_gPcd_BinaryPatch_%s, &_gPcd_BinaryPatch_Size_%s, (UINTN)_PCD_PATCHABLE_%s_SIZE, (SizeOfBuffer), (Buffer))\n' % (SetModeStatusName, Pcd.TokenCName, Pcd.TokenCName, Pcd.TokenCName))\r
else:\r
AutoGenH.Append('#define %s(Value) (%s = (Value))\n' % (SetModeName, PcdVariableName))\r
AutoGenH.Append('#define %s(Value) ((%s = (Value)), RETURN_SUCCESS) \n' % (SetModeStatusName, PcdVariableName))\r
TokenSpaceGuidCName = Pcd.TokenSpaceGuidCName\r
TokenCName = Pcd.TokenCName\r
PcdTokenName = '_PCD_TOKEN_' + TokenCName\r
+ FixPcdSizeTokenName = '_PCD_SIZE_' + Pcd.TokenCName\r
+ PatchPcdSizeTokenName = '_PCD_PATCHABLE_' + Pcd.TokenCName +'_SIZE'\r
+ PatchPcdSizeVariableName = '_gPcd_BinaryPatch_Size_' + Pcd.TokenCName\r
+ \r
#\r
# Write PCDs\r
#\r
GetModeName = '_PCD_GET_MODE_' + DatumSize + '_' + TokenCName\r
SetModeName = '_PCD_SET_MODE_' + DatumSize + '_' + TokenCName\r
SetModeStatusName = '_PCD_SET_MODE_' + DatumSize + '_S_' + TokenCName\r
+ GetModeSizeName = '_PCD_GET_MODE_SIZE' + '_' + Pcd.TokenCName\r
\r
Type = ''\r
Array = ''\r
AutoGenH.Append('// Disabled the macros, as PcdToken and PcdGet/Set are not allowed in the case that more than one DynamicEx Pcds are different Guids but same CName.\n')\r
AutoGenH.Append('// #define %s %s\n' % (PcdTokenName, PcdExTokenName))\r
AutoGenH.Append('// #define %s LibPcdGetEx%s(&%s, %s)\n' % (GetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))\r
+ AutoGenH.Append('// #define %s LibPcdGetExSize(&%s, %s \n' % (GetModeSizeName,Pcd.TokenSpaceGuidCName, PcdTokenName))\r
if Pcd.DatumType == 'VOID*':\r
AutoGenH.Append('// #define %s(SizeOfBuffer, Buffer) LibPcdSetEx%s(&%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))\r
AutoGenH.Append('// #define %s(SizeOfBuffer, Buffer) LibPcdSetEx%sS(&%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeStatusName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))\r
else:\r
AutoGenH.Append('#define %s %s\n' % (PcdTokenName, PcdExTokenName))\r
AutoGenH.Append('#define %s LibPcdGetEx%s(&%s, %s)\n' % (GetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))\r
+ AutoGenH.Append('#define %s LibPcdGetExSize(&%s, %s)\n' % (GetModeSizeName,Pcd.TokenSpaceGuidCName, PcdTokenName))\r
if Pcd.DatumType == 'VOID*':\r
AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPcdSetEx%s(&%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))\r
AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPcdSetEx%sS(&%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeStatusName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))\r
else:\r
AutoGenH.Append('#define _PCD_TOKEN_%s %dU\n' % (TokenCName, TokenNumber))\r
if PcdItemType in gDynamicPcd:\r
- AutoGenH.Append('#define %s LibPcdGet%s(%s)\n' % (GetModeName, DatumSizeLib, PcdTokenName))\r
- if DatumType == 'VOID*':\r
- AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPcdSet%s(%s, (SizeOfBuffer), (Buffer))\n' %(SetModeName, DatumSizeLib, PcdTokenName))\r
- AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPcdSet%sS(%s, (SizeOfBuffer), (Buffer))\n' % (SetModeStatusName, DatumSizeLib, PcdTokenName))\r
+ PcdList = []\r
+ PcdCNameList = []\r
+ PcdList.extend(Info.LibraryPcdList)\r
+ PcdList.extend(Info.ModulePcdList)\r
+ for PcdModule in PcdList:\r
+ if PcdModule.Type in gDynamicPcd:\r
+ PcdCNameList.append(PcdModule.TokenCName)\r
+ if PcdCNameList.count(Pcd.TokenCName) > 1:\r
+ EdkLogger.error("build", AUTOGEN_ERROR, "More than one Dynamic Pcds [%s] are different Guids but same CName.They need to be changed to DynamicEx type to avoid the confliction.\n" % (Pcd.TokenCName), ExtraData="[%s]" % str(Info.MetaFile.Path))\r
else:\r
- AutoGenH.Append('#define %s(Value) LibPcdSet%s(%s, (Value))\n' % (SetModeName, DatumSizeLib, PcdTokenName))\r
- AutoGenH.Append('#define %s(Value) LibPcdSet%sS(%s, (Value))\n' % (SetModeStatusName, DatumSizeLib, PcdTokenName))\r
+ AutoGenH.Append('#define %s LibPcdGet%s(%s)\n' % (GetModeName, DatumSizeLib, PcdTokenName))\r
+ AutoGenH.Append('#define %s LibPcdGetSize(%s)\n' % (GetModeSizeName, PcdTokenName))\r
+ if DatumType == 'VOID*':\r
+ AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPcdSet%s(%s, (SizeOfBuffer), (Buffer))\n' %(SetModeName, DatumSizeLib, PcdTokenName))\r
+ AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPcdSet%sS(%s, (SizeOfBuffer), (Buffer))\n' % (SetModeStatusName, DatumSizeLib, PcdTokenName))\r
+ else:\r
+ AutoGenH.Append('#define %s(Value) LibPcdSet%s(%s, (Value))\n' % (SetModeName, DatumSizeLib, PcdTokenName))\r
+ AutoGenH.Append('#define %s(Value) LibPcdSet%sS(%s, (Value))\n' % (SetModeStatusName, DatumSizeLib, PcdTokenName))\r
if PcdItemType == TAB_PCDS_PATCHABLE_IN_MODULE:\r
PcdVariableName = '_gPcd_' + gItemTypeStringDatabase[TAB_PCDS_PATCHABLE_IN_MODULE] + '_' + TokenCName\r
AutoGenH.Append('extern volatile %s _gPcd_BinaryPatch_%s%s;\n' %(DatumType, TokenCName, Array) )\r
AutoGenH.Append('#define %s %s_gPcd_BinaryPatch_%s\n' %(GetModeName, Type, TokenCName))\r
- AutoGenH.Append('#define %s(Value) (%s = (Value))\n' % (SetModeName, PcdVariableName))\r
- AutoGenH.Append('#define %s(Value) ((%s = (Value)), RETURN_SUCCESS)\n' % (SetModeStatusName, PcdVariableName))\r
+ if Pcd.DatumType == 'VOID*':\r
+ AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPatchPcdSetPtrAndSize((VOID *)_gPcd_BinaryPatch_%s, &_gPcd_BinaryPatch_Size_%s, (UINTN)_PCD_PATCHABLE_%s_SIZE, (SizeOfBuffer), (Buffer))\n' % (SetModeName, Pcd.TokenCName, Pcd.TokenCName, Pcd.TokenCName))\r
+ AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPatchPcdSetPtrAndSizeS((VOID *)_gPcd_BinaryPatch_%s, &_gPcd_BinaryPatch_Size_%s, (UINTN)_PCD_PATCHABLE_%s_SIZE, (SizeOfBuffer), (Buffer))\n' % (SetModeStatusName, Pcd.TokenCName, Pcd.TokenCName, Pcd.TokenCName))\r
+ else:\r
+ AutoGenH.Append('#define %s(Value) (%s = (Value))\n' % (SetModeName, PcdVariableName))\r
+ AutoGenH.Append('#define %s(Value) ((%s = (Value)), RETURN_SUCCESS)\n' % (SetModeStatusName, PcdVariableName))\r
+ \r
+ PcdDataSize = GetPcdSize(Pcd)\r
+ AutoGenH.Append('#define %s %s\n' % (PatchPcdSizeTokenName, PcdDataSize))\r
+ AutoGenH.Append('#define %s %s\n' % (GetModeSizeName,PatchPcdSizeVariableName))\r
+ AutoGenH.Append('extern UINTN %s; \n' % PatchPcdSizeVariableName)\r
+ \r
if PcdItemType == TAB_PCDS_FIXED_AT_BUILD or PcdItemType == TAB_PCDS_FEATURE_FLAG:\r
key = ".".join((Pcd.TokenSpaceGuidCName,Pcd.TokenCName))\r
\r
+ if DatumType == 'VOID*' and Array == '[]':\r
+ DatumType = ['UINT8', 'UINT16'][Pcd.DefaultValue[0] == 'L']\r
AutoGenH.Append('extern const %s _gPcd_FixedAtBuild_%s%s;\n' %(DatumType, TokenCName, Array))\r
AutoGenH.Append('#define %s %s_gPcd_FixedAtBuild_%s\n' %(GetModeName, Type, TokenCName))\r
AutoGenH.Append('//#define %s ASSERT(FALSE) // It is not allowed to set value for a FIXED_AT_BUILD PCD\n' % SetModeName)\r
if PcdItemType == TAB_PCDS_FIXED_AT_BUILD and key in Info.ConstPcd:\r
AutoGenH.Append('#define _PCD_VALUE_%s %s\n' %(TokenCName, Pcd.DefaultValue))\r
\r
-\r
+ if PcdItemType == TAB_PCDS_FIXED_AT_BUILD:\r
+ PcdDataSize = GetPcdSize(Pcd)\r
+ AutoGenH.Append('#define %s %s\n' % (FixPcdSizeTokenName, PcdDataSize))\r
+ AutoGenH.Append('#define %s %s\n' % (GetModeSizeName,FixPcdSizeTokenName))\r
\r
## Create code for library constructor\r
#\r
# @param AutoGenH The TemplateString object for header file\r
#\r
def CreateGuidDefinitionCode(Info, AutoGenC, AutoGenH):\r
- if Info.IsLibrary:\r
- return\r
-\r
if Info.ModuleType in ["USER_DEFINED", "BASE"]:\r
GuidType = "GUID"\r
else:\r
GuidType = "EFI_GUID"\r
\r
if Info.GuidList:\r
- AutoGenC.Append("\n// Guids\n")\r
+ if not Info.IsLibrary:\r
+ AutoGenC.Append("\n// Guids\n")\r
AutoGenH.Append("\n// Guids\n")\r
#\r
# GUIDs\r
#\r
for Key in Info.GuidList:\r
- AutoGenC.Append('GLOBAL_REMOVE_IF_UNREFERENCED %s %s = %s;\n' % (GuidType, Key, Info.GuidList[Key]))\r
+ if not Info.IsLibrary:\r
+ AutoGenC.Append('GLOBAL_REMOVE_IF_UNREFERENCED %s %s = %s;\n' % (GuidType, Key, Info.GuidList[Key]))\r
AutoGenH.Append('extern %s %s;\n' % (GuidType, Key))\r
\r
## Create code for protocol\r
# @param AutoGenH The TemplateString object for header file\r
#\r
def CreateProtocolDefinitionCode(Info, AutoGenC, AutoGenH):\r
- if Info.IsLibrary:\r
- return\r
-\r
if Info.ModuleType in ["USER_DEFINED", "BASE"]:\r
GuidType = "GUID"\r
else:\r
GuidType = "EFI_GUID"\r
\r
if Info.ProtocolList:\r
- AutoGenC.Append("\n// Protocols\n")\r
+ if not Info.IsLibrary:\r
+ AutoGenC.Append("\n// Protocols\n")\r
AutoGenH.Append("\n// Protocols\n")\r
#\r
# Protocol GUIDs\r
#\r
for Key in Info.ProtocolList:\r
- AutoGenC.Append('GLOBAL_REMOVE_IF_UNREFERENCED %s %s = %s;\n' % (GuidType, Key, Info.ProtocolList[Key]))\r
+ if not Info.IsLibrary:\r
+ AutoGenC.Append('GLOBAL_REMOVE_IF_UNREFERENCED %s %s = %s;\n' % (GuidType, Key, Info.ProtocolList[Key]))\r
AutoGenH.Append('extern %s %s;\n' % (GuidType, Key))\r
\r
## Create code for PPI\r
# @param AutoGenH The TemplateString object for header file\r
#\r
def CreatePpiDefinitionCode(Info, AutoGenC, AutoGenH):\r
- if Info.IsLibrary:\r
- return\r
-\r
if Info.ModuleType in ["USER_DEFINED", "BASE"]:\r
GuidType = "GUID"\r
else:\r
GuidType = "EFI_GUID"\r
\r
if Info.PpiList:\r
- AutoGenC.Append("\n// PPIs\n")\r
+ if not Info.IsLibrary:\r
+ AutoGenC.Append("\n// PPIs\n")\r
AutoGenH.Append("\n// PPIs\n")\r
#\r
# PPI GUIDs\r
#\r
for Key in Info.PpiList:\r
- AutoGenC.Append('GLOBAL_REMOVE_IF_UNREFERENCED %s %s = %s;\n' % (GuidType, Key, Info.PpiList[Key]))\r
+ if not Info.IsLibrary:\r
+ AutoGenC.Append('GLOBAL_REMOVE_IF_UNREFERENCED %s %s = %s;\n' % (GuidType, Key, Info.PpiList[Key]))\r
AutoGenH.Append('extern %s %s;\n' % (GuidType, Key))\r
\r
## Create code for PCD\r