Refine the code for PCD tools.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1282 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
klu2
2006-08-15 18:33:53 +00:00
parent 5f907e4a5b
commit 11eb278ae5
6 changed files with 171 additions and 92 deletions

View File

@@ -66,7 +66,10 @@ public abstract class BuildAction extends Task {
@param logStr The string contains log information.
**/
public static void logMsg(Object action, String logStr) {
((Task) action).log(logStr, Project.MSG_INFO);
try {
((Task) action).log(logStr, Project.MSG_INFO);
} catch (Exception exp) {
}
}
/**

View File

@@ -58,6 +58,7 @@ public abstract class PlatformPcdPreprocessAction {
public PlatformPcdPreprocessAction() {
pcdDbManager = null;
errorString = null;
errorCount = 0;
}
/**
@@ -77,12 +78,13 @@ public abstract class PlatformPcdPreprocessAction {
public MemoryDatabaseManager getPcdDbManager() {
return pcdDbManager;
}
/**
Abstract function: retrieve module information from FPD file.
In building environement, this function will be implementated by FpdParserTask.
@return List<ModuleInfo> the component array.
@return List<ModulePcdInfoFromFpd> the component array.
@throws PlatformPcdPreprocessException get all modules in <ModuleSA> in FPD file.
**/
@@ -100,8 +102,7 @@ public abstract class PlatformPcdPreprocessAction {
@throws PlatformPcdPreprocessException
Fail to get Guid information from SPD file.
**/
public abstract String getGuidInfoFromSpd(String guidCName)
throws PlatformPcdPreprocessException;
public abstract String getGuidInfoFromSpd(String guidCName) throws PlatformPcdPreprocessException;
/**
Abstract function: Verification the PCD data.
@@ -118,11 +119,8 @@ public abstract class PlatformPcdPreprocessAction {
@return String exception strings.
**/
public abstract String verifyDatum(String cName,
String moduleName,
String datum,
Token.DATUM_TYPE datumType,
int maxDatumSize);
public abstract String verifyDatum(String cName, String moduleName, String datum,
Token.DATUM_TYPE datumType, int maxDatumSize);
/**
Abstract function: Get dynamic information for a token
@@ -173,22 +171,23 @@ public abstract class PlatformPcdPreprocessAction {
**/
public void initPcdMemoryDbWithPlatformInfo()
throws PlatformPcdPreprocessException {
int index = 0;
int pcdIndex = 0;
int index;
int pcdIndex;
List<PcdBuildDefinition.PcdData> pcdBuildDataArray = new ArrayList<PcdBuildDefinition.PcdData>();
PcdBuildDefinition.PcdData pcdBuildData = null;
PcdBuildDefinition.PcdData pcdBuildData;
Token token = null;
List<ModulePcdInfoFromFpd> modules = null;
String primaryKey = null;
String exceptionString = null;
UsageInstance usageInstance = null;
List<ModulePcdInfoFromFpd> modules;
String primaryKey;
String exceptionString;
UsageInstance usageInstance;
Token.PCD_TYPE pcdType = Token.PCD_TYPE.UNKNOWN;
Token.DATUM_TYPE datumType = Token.DATUM_TYPE.UNKNOWN;
long tokenNumber = 0;
String moduleName = null;
String datum = null;
int maxDatumSize = 0;
String tokenSpaceStrRet = null;
long tokenNumber;
String moduleName;
String datum;
int maxDatumSize;
String tokenSpaceStrRet;
ModulePcdInfoFromFpd curModule;
//
// ----------------------------------------------
@@ -208,16 +207,17 @@ public abstract class PlatformPcdPreprocessAction {
// -------------------------------------------------------------------
//
for (index = 0; index < modules.size(); index++) {
//
curModule = modules.get(index);
//
// It is legal for a module does not contains ANY pcd build definitions.
//
if (modules.get(index).pcdBuildDefinition == null) {
if (curModule.pcdBuildDefinition == null) {
continue;
}
pcdBuildDataArray = modules.get(index).pcdBuildDefinition.getPcdDataList();
moduleName = modules.get(index).usageId.moduleName;
pcdBuildDataArray = curModule.pcdBuildDefinition.getPcdDataList();
moduleName = curModule.usageId.moduleName;
//
// ----------------------------------------------------------------------
@@ -433,7 +433,7 @@ public abstract class PlatformPcdPreprocessAction {
// ------------------------------------------------
//
usageInstance = new UsageInstance(token,
modules.get(index).usageId,
curModule.usageId,
pcdType,
datum,
maxDatumSize);
@@ -441,7 +441,7 @@ public abstract class PlatformPcdPreprocessAction {
putError(String.format("PCD %s for module %s(%s) already exists in the database.\nPlease check all PCD build entries "+
"in the %s module's <ModuleSA> section to make sure there are no duplicated definitions in the FPD file!",
token.cName,
modules.get(index).usageId.moduleGuid,
curModule.usageId.moduleGuid,
moduleName,
moduleName));
continue;

View File

@@ -193,20 +193,40 @@ public class UsageInstance {
switch (modulePcdType) {
case FEATURE_FLAG:
//
// Example autogen string for following generation:
// "extern const BOOLEAN _gPcd_FixedAtBuild_PcdSampleToken";
//
hAutogenStr += String.format("extern const BOOLEAN _gPcd_FixedAtBuild_%s;\r\n",
parentToken.cName);
//
// Example autogen string for following generation:
// "#define _PCD_GET_MODE_8_PcdSampleToken _gPcd_FixedAtBuild_PcdSampleToken";
//
hAutogenStr += String.format("#define _PCD_GET_MODE_%s_%s _gPcd_FixedAtBuild_%s\r\n",
Token.GetAutogenDefinedatumTypeString(parentToken.datumType),
parentToken.cName,
parentToken.cName);
//
// Example autogen string for following generation:
// "//#define _PCD_SET_MODE_8_PcdSampleToken ASSERT(FALSE) If is not allowed to set value...";
//
hAutogenStr += String.format("//#define _PCD_SET_MODE_%s_%s ASSERT(FALSE) If is not allowed to set value for a FEATURE_FLAG PCD\r\n",
Token.GetAutogenDefinedatumTypeString(parentToken.datumType),
parentToken.cName);
if (!isBuildUsedLibrary) {
//
// Example autogen string for following generation:
// "#define _PCD_VALUE_PcdSampleToken 0x1000"
//
hAutogenStr += String.format("#define _PCD_VALUE_%s %s\r\n",
parentToken.cName,
printDatum);
//
// Example autogen string for following generation:
// "GLOBAL_REMOVE_IF_UNREFERENCED const BOOLEAN _gPcd_FixedAtBuild_PcdSampleToken = _PCD_VALUE_PcdSampleToken;"
//
cAutogenStr += String.format("GLOBAL_REMOVE_IF_UNREFERENCED const BOOLEAN _gPcd_FixedAtBuild_%s = _PCD_VALUE_%s;\r\n",
parentToken.cName,
parentToken.cName);
@@ -214,47 +234,91 @@ public class UsageInstance {
break;
case FIXED_AT_BUILD:
if (isByteArray) {
//
// Example autogen string for following generation:
// "extern const BOOLEAN _gPcd_FixedAtBuild_PcdSampleToken";
//
hAutogenStr += String.format("extern const UINT8 _gPcd_FixedAtBuild_%s[];\r\n",
parentToken.cName);
//
// Example autogen string for following generation:
// "#define _PCD_GET_MODE_8_PcdSampleToken (VOID*)_gPcd_FixedAtBuild_PcdSampleToken";
//
hAutogenStr += String.format("#define _PCD_GET_MODE_%s_%s (VOID*)_gPcd_FixedAtBuild_%s\r\n",
Token.GetAutogenDefinedatumTypeString(parentToken.datumType),
parentToken.cName,
parentToken.cName);
} else {
//
// Example autogen string for following generation:
// "extern const UINT8 _gPcd_FixedAtBuild_PcdSampleToken";
//
hAutogenStr += String.format("extern const %s _gPcd_FixedAtBuild_%s;\r\n",
Token.getAutogendatumTypeString(parentToken.datumType),
parentToken.cName);
//
// Example autogen string for following generation:
// "#define _PCD_GET_MODE_8_PcdSampleToken _gPcd_FixedAtBuild_PcdSampleToken";
//
hAutogenStr += String.format("#define _PCD_GET_MODE_%s_%s _gPcd_FixedAtBuild_%s\r\n",
Token.GetAutogenDefinedatumTypeString(parentToken.datumType),
parentToken.cName,
parentToken.cName);
}
//
// Example autogen string for following generation:
// "//#define _PCD_SET_MODE_8_PcdSampleToken ASSERT(FALSE) If is not allowed to set value...";
//
hAutogenStr += String.format("//#define _PCD_SET_MODE_%s_%s ASSERT(FALSE) // It is not allowed to set value for a FIXED_AT_BUILD PCD\r\n",
Token.GetAutogenDefinedatumTypeString(parentToken.datumType),
parentToken.cName);
if (!isBuildUsedLibrary) {
if (parentToken.datumType == Token.DATUM_TYPE.POINTER) {
if (isByteArray) {
//
// Example autogen string for following generation:
// "#define _PCD_VALUE_PcdSampleToken (VOID*)_gPcd_FixedAtBuild_PcdSampleToken"
//
hAutogenStr += String.format("#define _PCD_VALUE_%s (VOID*)_gPcd_FixedAtBuild_%s\r\n",
parentToken.cName,
parentToken.cName);
//
// Example autogen string for following generation:
// "GLOBAL_REMOVE_IF_UNREFERENCED const UINT8 _gPcd_FixedAtBuild_PcdSampleToken[] = 'dfdf';"
//
cAutogenStr += String.format("GLOBAL_REMOVE_IF_UNREFERENCED const UINT8 _gPcd_FixedAtBuild_%s[] = %s;\r\n",
parentToken.cName,
printDatum);
} else {
//
// Example autogen string for following generation:
// "#define _PCD_VALUE_PcdSampleToken 0x222"
//
hAutogenStr += String.format("#define _PCD_VALUE_%s %s\r\n",
parentToken.cName,
printDatum);
//
// Example autogen string for following generation:
// "GLOBAL_REMOVE_IF_UNREFERENCED const UINT8 _gPcd_FixedAtBuild_PcdSampleToken[] = _PCD_VALUE_PcdSampleToken;"
//
cAutogenStr += String.format("GLOBAL_REMOVE_IF_UNREFERENCED const %s _gPcd_FixedAtBuild_%s = _PCD_VALUE_%s;\r\n",
Token.getAutogendatumTypeString(parentToken.datumType),
parentToken.cName,
parentToken.cName);
}
} else {
//
// Example autogen string for following generation:
// "#define _PCD_VALUE_PcdSampleToken 0x222"
//
hAutogenStr += String.format("#define _PCD_VALUE_%s %s\r\n",
parentToken.cName,
printDatum);
//
// Example autogen string for following generation:
// "GLOBAL_REMOVE_IF_UNREFERENCED const UINT8 _gPcd_FixedAtBuild_PcdSampleToken[] = _PCD_VALUE_PcdSampleToken;"
//
cAutogenStr += String.format("GLOBAL_REMOVE_IF_UNREFERENCED const %s _gPcd_FixedAtBuild_%s = _PCD_VALUE_%s;\r\n",
Token.getAutogendatumTypeString(parentToken.datumType),
parentToken.cName,
@@ -264,16 +328,32 @@ public class UsageInstance {
break;
case PATCHABLE_IN_MODULE:
if (isByteArray) {
//
// Example autogen string for following generation:
// "extern UINT8 _gPcd_BinaryPatch_PcdSampleToken[];"
//
hAutogenStr += String.format("extern UINT8 _gPcd_BinaryPatch_%s[];\r\n",
parentToken.cName);
//
// Example autogen string for following generation:
// "#define _PCD_GET_MODE_8_PcdSampleToken (VOID*)_gPcd_BinaryPatch_PcdSampleToken"
//
hAutogenStr += String.format("#define _PCD_GET_MODE_%s_%s (VOID*)_gPcd_BinaryPatch_%s\r\n",
Token.GetAutogenDefinedatumTypeString(parentToken.datumType),
parentToken.cName,
parentToken.cName);
} else {
//
// Example autogen string for following generation:
// "extern UINT8 _gPcd_BinaryPatch_PcdSampleToken;"
//
hAutogenStr += String.format("extern %s _gPcd_BinaryPatch_%s;\r\n",
Token.getAutogendatumTypeString(parentToken.datumType),
parentToken.cName);
//
// Example autogen string for following generation:
// "#define _PCD_GET_MODE_8_PcdSampleToken _gPcd_BinaryPatch_PcdSampleToken"
//
hAutogenStr += String.format("#define _PCD_GET_MODE_%s_%s _gPcd_BinaryPatch_%s\r\n",
Token.GetAutogenDefinedatumTypeString(parentToken.datumType),
parentToken.cName,
@@ -284,11 +364,19 @@ public class UsageInstance {
// Generate _PCD_SET_MODE_xx macro for using set BinaryPatch value via PcdSet macro
//
if (parentToken.datumType == Token.DATUM_TYPE.POINTER) {
//
// Example autogen string for following generation:
// "#define _PCD_SET_MODE_8_PcdSampleToken(SizeOfBuffer, Buffer) CopyMem (_gPcd_BinaryPatch_PcdSampleToken, (Buffer), (SizeOfBuffer))"
//
hAutogenStr += String.format("#define _PCD_SET_MODE_%s_%s(SizeOfBuffer, Buffer) CopyMem (_gPcd_BinaryPatch_%s, (Buffer), (SizeOfBuffer))\r\n",
Token.GetAutogenDefinedatumTypeString(parentToken.datumType),
parentToken.cName,
parentToken.cName);
} else {
//
// Example autogen string for following generation:
// "#define _PCD_SET_MODE_8_PcdSampleToken(Value) (_gPcd_BinaryPatch_PcdSampleToken = (Value))"
//
hAutogenStr += String.format("#define _PCD_SET_MODE_%s_%s(Value) (_gPcd_BinaryPatch_%s = (Value))\r\n",
Token.GetAutogenDefinedatumTypeString(parentToken.datumType),
parentToken.cName,
@@ -296,14 +384,26 @@ public class UsageInstance {
}
if (!isBuildUsedLibrary) {
//
// Example autogen string for following generation:
// "#define _PCD_VALUE_PcdSampleToken 0x111"
//
hAutogenStr += String.format("#define _PCD_VALUE_%s %s\r\n",
parentToken.cName,
printDatum);
if (isByteArray) {
//
// Example autogen string for following generation:
// "GLOBAL_REMOVE_IF_UNREFERENCED UINT8 _gPcd_BinaryPatch_PcdSampleToken[] = _PCD_VALUE_PcdSampleToken;"
//
cAutogenStr += String.format("GLOBAL_REMOVE_IF_UNREFERENCED UINT8 _gPcd_BinaryPatch_%s[] = _PCD_VALUE_%s;\r\n",
parentToken.cName,
parentToken.cName);
} else {
//
// Example autogen string for following generation:
// "GLOBAL_REMOVE_IF_UNREFERENCED UINT8 _gPcd_BinaryPatch_PcdSampleToken[] = _PCD_VALUE_PcdSampleToken;"
//
cAutogenStr += String.format("GLOBAL_REMOVE_IF_UNREFERENCED %s _gPcd_BinaryPatch_%s = _PCD_VALUE_%s;\r\n",
Token.getAutogendatumTypeString(parentToken.datumType),
parentToken.cName,
@@ -313,18 +413,30 @@ public class UsageInstance {
break;
case DYNAMIC:
//
// Example autogen string for following generation:
// "#define _PCD_GET_MODE_8_PcdSampleToken LibPcdGet%s(_PCD_TOKEN_PcdSampleToken)"
//
hAutogenStr += String.format("#define _PCD_GET_MODE_%s_%s LibPcdGet%s(_PCD_TOKEN_%s)\r\n",
Token.GetAutogenDefinedatumTypeString(parentToken.datumType),
parentToken.cName,
Token.getAutogenLibrarydatumTypeString(parentToken.datumType),
parentToken.cName);
if (parentToken.datumType == Token.DATUM_TYPE.POINTER) {
//
// Example autogen string for following generation:
// "#define _PCD_SET_MODE_8_PcdSampleToken(SizeOfBuffer, Buffer) LibPcdSet%s(_PCD_TOKEN_PcdSampleToken, (SizeOfBuffer), (Buffer))"
//
hAutogenStr += String.format("#define _PCD_SET_MODE_%s_%s(SizeOfBuffer, Buffer) LibPcdSet%s(_PCD_TOKEN_%s, (SizeOfBuffer), (Buffer))\r\n",
Token.GetAutogenDefinedatumTypeString(parentToken.datumType),
parentToken.cName,
Token.getAutogenLibrarydatumTypeString(parentToken.datumType),
parentToken.cName);
} else {
//
// Example autogen string for following generation:
// "#define _PCD_SET_MODE_8_PcdSampleToken(Value) LibPcdSet%s(_PCD_TOKEN_PcdSampleToken, (Value))"
//
hAutogenStr += String.format("#define _PCD_SET_MODE_%s_%s(Value) LibPcdSet%s(_PCD_TOKEN_%s, (Value))\r\n",
Token.GetAutogenDefinedatumTypeString(parentToken.datumType),
parentToken.cName,
@@ -336,6 +448,10 @@ public class UsageInstance {
guidStringCName = "_gPcd_TokenSpaceGuid_" +
parentToken.tokenSpaceName.toString().replaceAll("-", "_");
//
// Example autogen string for following generation:
// "#define _PCD_GET_MODE_8_PcdSampleToken LibPcdGetEx%s(&_gPcd_TokenSpaceGuid_00_00_00, _PCD_TOKEN_PcdSampleToken)"
//
hAutogenStr += String.format("#define _PCD_GET_MODE_%s_%s LibPcdGetEx%s(&%s, _PCD_TOKEN_%s)\r\n",
Token.GetAutogenDefinedatumTypeString(parentToken.datumType),
parentToken.cName,
@@ -344,6 +460,10 @@ public class UsageInstance {
parentToken.cName);
if (parentToken.datumType == Token.DATUM_TYPE.POINTER) {
//
// Example autogen string for following generation:
// "#define _PCD_SET_MODE_8_PcdSampleToken(SizeOfBuffer, Buffer) LibPcdSetEx%s(&_gPcd_TokenSpaceGuid_00_00_00, _PCD_TOKEN_PcdSampleToken, (SizeOfBuffer), (Buffer))"
//
hAutogenStr += String.format("#define _PCD_SET_MODE_%s_%s(SizeOfBuffer, Buffer) LibPcdSetEx%s(&%s, _PCD_TOKEN_%s, (SizeOfBuffer), (Buffer))\r\n",
Token.GetAutogenDefinedatumTypeString(parentToken.datumType),
parentToken.cName,
@@ -351,6 +471,10 @@ public class UsageInstance {
guidStringCName,
parentToken.cName);
} else {
//
// Example autogen string for following generation:
// "#define _PCD_SET_MODE_8_PcdSampleToken(Value) LibPcdSetEx%s(&_gPcd_TokenSpaceGuid_00_00_00, _PCD_TOKEN_PcdSampleToken, (Value))"
//
hAutogenStr += String.format("#define _PCD_SET_MODE_%s_%s(Value) LibPcdSetEx%s(&%s, _PCD_TOKEN_%s, (Value))\r\n",
Token.GetAutogenDefinedatumTypeString(parentToken.datumType),
parentToken.cName,