+ /**\r
+ Generate unreference token definition string for PCD emulated string. \r
+ \r
+ Maybe some PCD token definition in FPD but not used by any module or library, we \r
+ should also generate token definition in autoge.h/autogen.c, because maybe some\r
+ driver loaded in shell will use this PCD. \r
+\r
+ @param token The token who want be generated autogen string.\r
+ \r
+ **/\r
+ private void generateUnReferencePcdAutogenString(Token token) {\r
+ hAutoGenString += String.format("#define _PCD_TOKEN_%s 0x%016x\r\n", \r
+ token.cName, token.tokenNumber);\r
+ switch (token.pcdType) {\r
+ case FEATURE_FLAG:\r
+ hAutoGenString += String.format(\r
+ "#define _PCD_VALUE_%s %s\r\n", \r
+ token.cName, \r
+ token.datum.toString()\r
+ );\r
+ hAutoGenString += String.format(\r
+ "extern const BOOLEAN _gPcd_FixedAtBuild_%s;\r\n", \r
+ token.cName\r
+ );\r
+ cAutoGenString += String.format(\r
+ "GLOBAL_REMOVE_IF_UNREFERENCED const BOOLEAN _gPcd_FixedAtBuild_%s = _PCD_VALUE_%s;\r\n",\r
+ token.cName,\r
+ token.cName\r
+ );\r
+ hAutoGenString += String.format(\r
+ "#define _PCD_MODE_%s_%s _PCD_VALUE_%s\r\n",\r
+ Token.GetAutogenDefinedatumTypeString(token.datumType),\r
+ token.cName,\r
+ token.cName\r
+ );\r
+ break;\r
+ case FIXED_AT_BUILD:\r
+ hAutoGenString += String.format(\r
+ "#define _PCD_VALUE_%s %s\r\n", \r
+ token.cName, \r
+ token.datum.toString()\r
+ );\r
+ hAutoGenString += String.format(\r
+ "extern const %s _gPcd_FixedAtBuild_%s;\r\n",\r
+ Token.getAutogendatumTypeString(token.datumType),\r
+ token.cName\r
+ );\r
+ cAutoGenString += String.format(\r
+ "GLOBAL_REMOVE_IF_UNREFERENCED const %s _gPcd_FixedAtBuild_%s = _PCD_VALUE_%s;\r\n",\r
+ Token.getAutogendatumTypeString(token.datumType),\r
+ token.cName,\r
+ token.cName\r
+ );\r
+ hAutoGenString += String.format(\r
+ "#define _PCD_MODE_%s_%s _PCD_VALUE_%s\r\n",\r
+ Token.GetAutogenDefinedatumTypeString(token.datumType),\r
+ token.cName,\r
+ token.cName\r
+ );\r
+ break;\r
+ case PATCHABLE_IN_MODULE:\r
+ hAutoGenString += String.format(\r
+ "#define _PCD_VALUE_%s %s\r\n", \r
+ token.cName, \r
+ token.datum.toString()\r
+ );\r
+ hAutoGenString += String.format(\r
+ "extern %s _gPcd_BinaryPatch_%s;\r\n",\r
+ Token.getAutogendatumTypeString(token.datumType),\r
+ token.cName\r
+ );\r
+ cAutoGenString += String.format(\r
+ "GLOBAL_REMOVE_IF_UNREFERENCED %s _gPcd_BinaryPatch_%s = _PCD_VALUE_%s;\r\n",\r
+ Token.getAutogendatumTypeString(token.datumType),\r
+ token.cName,\r
+ token.cName\r
+ );\r
+ hAutoGenString += String.format(\r
+ "#define _PCD_MODE_%s_%s _gPcd_BinaryPatch_%s\r\n",\r
+ Token.GetAutogenDefinedatumTypeString(token.datumType),\r
+ token.cName,\r
+ token.cName\r
+ );\r
+ break;\r
+ case DYNAMIC:\r
+ hAutoGenString += String.format(\r
+ "#define _PCD_MODE_%s_%s LibPcdGet%s(_PCD_TOKEN_%s)\r\n",\r
+ Token.GetAutogenDefinedatumTypeString(token.datumType),\r
+ token.cName,\r
+ Token.getAutogenLibrarydatumTypeString(token.datumType),\r
+ token.cName\r
+ );\r
+ break;\r
+ case DYNAMIC_EX:\r
+ break;\r
+ default:\r
+ ActionMessage.warning(this, \r
+ "The PCD_TYPE setted by platform is unknown"\r
+ );\r
+ }\r
+\r
+ hAutoGenString += "\r\n";\r
+ cAutoGenString += "\r\n";\r
+ }\r
+ \r