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

@ -362,7 +362,7 @@ public class AutoGen {
// //
if (this.myPcdAutogen != null) { if (this.myPcdAutogen != null) {
fileBuffer.append("\r\n"); fileBuffer.append("\r\n");
fileBuffer.append(this.myPcdAutogen.OutputH()); fileBuffer.append(this.myPcdAutogen.getHAutoGenString());
} }
// //
@ -496,7 +496,7 @@ public class AutoGen {
if (this.myPcdAutogen != null) { if (this.myPcdAutogen != null) {
fileBuffer.append("\r\n"); fileBuffer.append("\r\n");
fileBuffer.append(this.myPcdAutogen.OutputC()); fileBuffer.append(this.myPcdAutogen.getCAutoGenString());
} }
if (!saveFile(outputPath + File.separatorChar + "AutoGen.c", fileBuffer)) { if (!saveFile(outputPath + File.separatorChar + "AutoGen.c", fileBuffer)) {
@ -599,7 +599,7 @@ public class AutoGen {
// //
if (this.myPcdAutogen != null) { if (this.myPcdAutogen != null) {
fileBuffer.append("\r\n"); fileBuffer.append("\r\n");
fileBuffer.append(this.myPcdAutogen.OutputH()); fileBuffer.append(this.myPcdAutogen.getHAutoGenString());
} }
// //
@ -650,7 +650,7 @@ public class AutoGen {
if (this.myPcdAutogen != null) { if (this.myPcdAutogen != null) {
fileBuffer.append("\r\n"); fileBuffer.append("\r\n");
fileBuffer.append(this.myPcdAutogen.OutputC()); fileBuffer.append(this.myPcdAutogen.getCAutoGenString());
} }
if (!saveFile(outputPath + File.separatorChar + "AutoGen.c", fileBuffer)) { if (!saveFile(outputPath + File.separatorChar + "AutoGen.c", fileBuffer)) {

View File

@ -34,8 +34,9 @@ import org.tianocore.pcd.entity.UsageIdentification;
import org.tianocore.pcd.entity.UsageInstance; import org.tianocore.pcd.entity.UsageInstance;
import org.tianocore.pcd.exception.BuildActionException; import org.tianocore.pcd.exception.BuildActionException;
/** This class is to manage how to generate the PCD information into Autogen.c and /**
Autogen.h. This class is to manage how to generate the PCD information into Autogen.c
and Autogen.h.
**/ **/
public class PCDAutoGenAction extends BuildAction { public class PCDAutoGenAction extends BuildAction {
/// ///
@ -113,7 +114,7 @@ public class PCDAutoGenAction extends BuildAction {
@return the string of header file for PCD @return the string of header file for PCD
**/ **/
public String OutputH() { public String getHAutoGenString() {
return hAutoGenString; return hAutoGenString;
} }
@ -122,7 +123,7 @@ public class PCDAutoGenAction extends BuildAction {
@return the string of C code file for PCD @return the string of C code file for PCD
**/ **/
public String OutputC() { public String getCAutoGenString() {
return cAutoGenString; return cAutoGenString;
} }
@ -317,10 +318,6 @@ public class PCDAutoGenAction extends BuildAction {
cAutoGenString += usageInstance.getCAutogenStr(); cAutoGenString += usageInstance.getCAutogenStr();
} }
//
// Work around code, In furture following code should be modified that get
// these information from Uplevel Autogen tools.
//
if (pcdDriverType == CommonDefinition.PCD_DRIVER_TYPE.PEI_PCD_DRIVER) { if (pcdDriverType == CommonDefinition.PCD_DRIVER_TYPE.PEI_PCD_DRIVER) {
hAutoGenString += MemoryDatabaseManager.PcdPeimHString; hAutoGenString += MemoryDatabaseManager.PcdPeimHString;
cAutoGenString += MemoryDatabaseManager.PcdPeimCString; cAutoGenString += MemoryDatabaseManager.PcdPeimCString;
@ -329,29 +326,4 @@ public class PCDAutoGenAction extends BuildAction {
cAutoGenString += MemoryDatabaseManager.PcdDxeCString; cAutoGenString += MemoryDatabaseManager.PcdDxeCString;
} }
} }
/**
Test case function
@param argv paramter from command line
**/
public static void main(String argv[]) {
String WorkSpace = "X:/edk2";
String logFilePath = WorkSpace + "/EdkNt32Pkg/Nt32.fpd";
//
// At first, CollectPCDAction should be invoked to collect
// all PCD information from SPD, MSA, FPD.
//
PlatformPcdPreprocessActionForBuilding collectionAction = new PlatformPcdPreprocessActionForBuilding();
GlobalData.initInfo("Tools" + File.separator + "Conf" + File.separator + "FrameworkDatabase.db",
WorkSpace,null);
try {
collectionAction.perform(logFilePath, ActionMessage.MAX_MESSAGE_LEVEL);
} catch(Exception e) {
e.printStackTrace();
}
}
} }

View File

@ -19,7 +19,6 @@ package org.tianocore.build.pcd.action;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.math.BigInteger;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
@ -50,7 +49,7 @@ import org.tianocore.pcd.exception.PlatformPcdPreprocessException;
**/ **/
public class PlatformPcdPreprocessActionForBuilding extends PlatformPcdPreprocessAction { public class PlatformPcdPreprocessActionForBuilding extends PlatformPcdPreprocessAction {
/// ///
/// FPD file is the root file. /// FPD file path.
/// ///
private String fpdFilePath; private String fpdFilePath;
@ -88,7 +87,7 @@ public class PlatformPcdPreprocessActionForBuilding extends PlatformPcdPreproces
/** /**
Common function interface for outer. Common function interface for outer.
@param fpdFilePath The fpd file path of current build or analysis. @param fpdFilePath The fpd file path of current build or processing.
@param messageLevel The message level for this Action. @param messageLevel The message level for this Action.
@throws PlatformPreprocessBuildException @throws PlatformPreprocessBuildException
@ -98,7 +97,7 @@ public class PlatformPcdPreprocessActionForBuilding extends PlatformPcdPreproces
**/ **/
public void perform(String fpdFilePath, int messageLevel) public void perform(String fpdFilePath, int messageLevel)
throws PlatformPcdPreprocessBuildException { throws PlatformPcdPreprocessBuildException {
setFPDFilePath(fpdFilePath); this.fpdFilePath = fpdFilePath;
setActionMessageLevel(messageLevel); setActionMessageLevel(messageLevel);
checkParameter(); checkParameter();
execute(); execute();
@ -152,7 +151,7 @@ public class PlatformPcdPreprocessActionForBuilding extends PlatformPcdPreproces
try { try {
genPcdDatabaseSourceCode (); genPcdDatabaseSourceCode ();
} catch (EntityException exp) { } catch (EntityException exp) {
throw new PlatformPcdPreprocessBuildException(errorMessageHeader + exp.getMessage()); throw new PlatformPcdPreprocessBuildException(errorMessageHeader + "\r\n" + exp.getMessage());
} }
} }
@ -323,7 +322,7 @@ public class PlatformPcdPreprocessActionForBuilding extends PlatformPcdPreproces
dynamicPrimaryKey = Token.getPrimaryKeyString(dynamicPcdBuildDataArray.get(index).getCName(), dynamicPrimaryKey = Token.getPrimaryKeyString(dynamicPcdBuildDataArray.get(index).getCName(),
tokenSpaceStrRet); tokenSpaceStrRet);
if (dynamicPrimaryKey.equalsIgnoreCase(token.getPrimaryKeyString())) { if (dynamicPrimaryKey.equals(token.getPrimaryKeyString())) {
return dynamicPcdBuildDataArray.get(index); return dynamicPcdBuildDataArray.get(index);
} }
} }
@ -374,11 +373,11 @@ public class PlatformPcdPreprocessActionForBuilding extends PlatformPcdPreproces
File file = null; File file = null;
if (fpdFilePath == null) { if (fpdFilePath == null) {
throw new PlatformPcdPreprocessBuildException("WorkspacePath and FPDFileName should be empty for CollectPCDAtion!"); throw new PlatformPcdPreprocessBuildException("FPDFileName should be empty for CollectPCDAtion!");
} }
if (fpdFilePath.length() == 0) { if (fpdFilePath.length() == 0) {
throw new PlatformPcdPreprocessBuildException("WorkspacePath and FPDFileName should be empty for CollectPCDAtion!"); throw new PlatformPcdPreprocessBuildException("FPDFileName should be empty for CollectPCDAtion!");
} }
file = new File(fpdFilePath); file = new File(fpdFilePath);
@ -387,23 +386,4 @@ public class PlatformPcdPreprocessActionForBuilding extends PlatformPcdPreproces
throw new PlatformPcdPreprocessBuildException("FPD File " + fpdFilePath + " does not exist!"); throw new PlatformPcdPreprocessBuildException("FPD File " + fpdFilePath + " does not exist!");
} }
} }
/**
Test case function
@param argv parameter from command line
**/
public static void main(String argv[]) throws PlatformPcdPreprocessBuildException {
PlatformPcdPreprocessActionForBuilding ca = new PlatformPcdPreprocessActionForBuilding();
String projectDir = "x:/edk2";
ca.setFPDFilePath(projectDir + "/EdkNt32Pkg/Nt32.fpd");
ca.setActionMessageLevel(ActionMessage.MAX_MESSAGE_LEVEL);
GlobalData.initInfo("Tools" + File.separator + "Conf" + File.separator + "FrameworkDatabase.db",
projectDir,
"tools_def.txt");
System.out.println("After initInfo!");
FpdParserTask fpt = new FpdParserTask();
fpt.parseFpdFile(new File(projectDir + "/EdkNt32Pkg/Nt32.fpd"));
ca.execute();
}
} }

View File

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

View File

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

View File

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