\r
private File fpdFile = null;\r
\r
- private PlatformIdentification platformId;\r
+ PlatformIdentification platformId;\r
\r
private String type;\r
\r
///\r
/// Mapping from modules identification to out put file name\r
///\r
- private Map<FpdModuleIdentification, String> outfiles = new LinkedHashMap<FpdModuleIdentification, String>();\r
+ Map<FpdModuleIdentification, String> outfiles = new LinkedHashMap<FpdModuleIdentification, String>();\r
\r
///\r
/// Mapping from FV name to its modules\r
///\r
- private Map<String, Set<FpdModuleIdentification>> fvs = new HashMap<String, Set<FpdModuleIdentification>>();\r
+ Map<String, Set<FpdModuleIdentification>> fvs = new HashMap<String, Set<FpdModuleIdentification>>();\r
\r
///\r
/// FpdParserTask can specify some ANT properties.\r
///\r
private Vector<Property> properties = new Vector<Property>();\r
\r
- private boolean isUnified = true;\r
+ SurfaceAreaQuery saq = null;\r
+ \r
+ boolean isUnified = true;\r
\r
/**\r
Public construct method. It is necessary for ANT task.\r
//\r
// Gen build.xml\r
//\r
- PlatformBuildFileGenerator fileGenerator = new PlatformBuildFileGenerator(getProject(), outfiles, fvs, isUnified);\r
+ PlatformBuildFileGenerator fileGenerator = new PlatformBuildFileGenerator(getProject(), outfiles, fvs, isUnified, saq);\r
fileGenerator.genBuildFile();\r
\r
//\r
@throws BuildException\r
File write FV.inf files error.\r
**/\r
- private void genFvInfFiles(String ffsCommonDir) throws BuildException {\r
- String[] validFv = SurfaceAreaQuery.getFpdValidImageNames();\r
+ void genFvInfFiles(String ffsCommonDir) throws BuildException {\r
+ String[] validFv = saq.getFpdValidImageNames();\r
for (int i = 0; i < validFv.length; i++) {\r
//\r
// Get all global variables from FPD and set them to properties\r
//\r
- String[][] globalVariables = SurfaceAreaQuery.getFpdGlobalVariable();\r
+ String[][] globalVariables = saq.getFpdGlobalVariable();\r
for (int j = 0; j < globalVariables.length; j++) {\r
getProject().setProperty(globalVariables[j][0], globalVariables[j][1]);\r
}\r
//\r
// Options\r
//\r
- String[][] options = SurfaceAreaQuery.getFpdOptions(validFv[i]);\r
+ String[][] options = saq.getFpdOptions(validFv[i]);\r
if (options.length > 0) {\r
bw.write("[options]");\r
bw.newLine();\r
//\r
// Attributes;\r
//\r
- String[][] attributes = SurfaceAreaQuery.getFpdAttributes(validFv[i]);\r
+ String[][] attributes = saq.getFpdAttributes(validFv[i]);\r
if (attributes.length > 0) {\r
bw.write("[attributes]");\r
bw.newLine();\r
//\r
// Components\r
//\r
- String[][] components = SurfaceAreaQuery.getFpdComponents(validFv[i]);\r
+ String[][] components = saq.getFpdComponents(validFv[i]);\r
if (components.length > 0) {\r
bw.write("[components]");\r
bw.newLine();\r
@throws BuildException\r
FPD file is not valid.\r
**/\r
- public void parseFpdFile(File fpdFile, ModuleIdentification singleModuleId) throws BuildException {\r
+ public void parseFpdFile(File fpdFile) throws BuildException {\r
this.fpdFile = fpdFile;\r
- parseFpdFile(singleModuleId);\r
+ parseFpdFile();\r
}\r
\r
- private void parseFpdFile() throws BuildException {\r
- parseFpdFile(null);\r
- }\r
/**\r
Parse FPD file.\r
\r
@throws BuildException\r
FPD file is not valid.\r
**/\r
- private void parseFpdFile(ModuleIdentification singleModuleId) throws BuildException {\r
+ void parseFpdFile() throws BuildException {\r
try {\r
XmlObject doc = XmlObject.Factory.parse(fpdFile);\r
\r
\r
Map<String, XmlObject> map = new HashMap<String, XmlObject>();\r
map.put("PlatformSurfaceArea", doc);\r
- SurfaceAreaQuery.setDoc(map);\r
+ saq = new SurfaceAreaQuery(map);\r
\r
//\r
// Initialize\r
//\r
- platformId = SurfaceAreaQuery.getFpdHeader();\r
+ platformId = saq.getFpdHeader();\r
platformId.setFpdFile(fpdFile);\r
getProject().setProperty("PLATFORM", platformId.getName());\r
getProject().setProperty("PLATFORM_FILE", platformId.getRelativeFpdFile().replaceAll("(\\\\)", "/"));\r
//\r
// Build mode. User-defined output dir.\r
//\r
- String buildMode = SurfaceAreaQuery.getFpdIntermediateDirectories();\r
- String userDefinedOutputDir = SurfaceAreaQuery.getFpdOutputDirectory();\r
+ String buildMode = saq.getFpdIntermediateDirectories();\r
+ String userDefinedOutputDir = saq.getFpdOutputDirectory();\r
\r
OutputManager.getInstance().setup(userDefinedOutputDir, buildMode);\r
\r
//\r
// TBD. Deal PCD and BuildOption related Info\r
//\r
- GlobalData.setFpdBuildOptions(SurfaceAreaQuery.getFpdBuildOptions());\r
+ GlobalData.setFpdBuildOptions(saq.getFpdBuildOptions());\r
\r
- GlobalData.setToolChainPlatformInfo(SurfaceAreaQuery.getFpdToolChainInfo());\r
+ GlobalData.setToolChainPlatformInfo(saq.getFpdToolChainInfo());\r
\r
//\r
// Parse all list modules SA\r
//\r
- parseModuleSAFiles(singleModuleId);\r
+ parseModuleSAFiles();\r
\r
//\r
// TBD. Deal PCD and BuildOption related Info\r
parseToolChainFamilyOptions();\r
parseToolChainOptions();\r
\r
- SurfaceAreaQuery.setDoc(map);\r
+ saq.push(map);\r
\r
//\r
// Pcd Collection. Call CollectPCDAction to collect pcd info.\r
}\r
}\r
\r
-\r
-\r
/**\r
Parse all modules listed in FPD file.\r
**/\r
- private void parseModuleSAFiles(ModuleIdentification singleModuleId) throws EdkException{\r
- Map<FpdModuleIdentification, Map<String, XmlObject>> moduleSAs = SurfaceAreaQuery.getFpdModules();\r
+ void parseModuleSAFiles() throws EdkException{\r
+ Map<FpdModuleIdentification, Map<String, XmlObject>> moduleSAs = saq.getFpdModules();\r
\r
//\r
// For every Module lists in FPD file.\r
while (iter.hasNext()) {\r
FpdModuleIdentification fpdModuleId = (FpdModuleIdentification) iter.next();\r
\r
- //\r
- // If is stand-alone module build, just parse this module, pass others\r
- //\r
- if (singleModuleId != null) {\r
- //\r
- // pass others modules\r
- //\r
- if ( ! fpdModuleId.getModule().equals(singleModuleId)) {\r
- continue ;\r
- }\r
- }\r
- \r
//\r
// Judge if Module is existed?\r
// TBD\r
//\r
// Put fpdModuleId to the corresponding FV\r
//\r
- SurfaceAreaQuery.push(GlobalData.getDoc(fpdModuleId));\r
- String fvBinding = SurfaceAreaQuery.getModuleFvBindingKeyword();\r
+ saq.push(GlobalData.getDoc(fpdModuleId));\r
+ String fvBinding = saq.getModuleFvBindingKeyword();\r
\r
fpdModuleId.setFvBinding(fvBinding);\r
updateFvs(fvBinding, fpdModuleId);\r
//\r
ModuleIdentification moduleId = fpdModuleId.getModule();\r
\r
- String baseName = SurfaceAreaQuery.getModuleOutputFileBasename();\r
+ String baseName = saq.getModuleOutputFileBasename();\r
\r
if (baseName == null) {\r
baseName = moduleId.getName();\r
//\r
GlobalData.addModuleToolChainOption(fpdModuleId, parseModuleBuildOptions(false));\r
GlobalData.addModuleToolChainFamilyOption(fpdModuleId, parseModuleBuildOptions(true));\r
- SurfaceAreaQuery.pop();\r
+ saq.pop();\r
}\r
}\r
\r
- private ToolChainMap parseModuleBuildOptions(boolean toolChainFamilyFlag) throws EdkException {\r
- String[][] options = SurfaceAreaQuery.getModuleBuildOptions(toolChainFamilyFlag);\r
+ ToolChainMap parseModuleBuildOptions(boolean toolChainFamilyFlag) throws EdkException {\r
+ String[][] options = saq.getModuleBuildOptions(toolChainFamilyFlag);\r
if (options == null || options.length == 0) {\r
return new ToolChainMap();\r
}\r
}\r
\r
private ToolChainMap parsePlatformBuildOptions(boolean toolChainFamilyFlag) throws EdkException {\r
- String[][] options = SurfaceAreaQuery.getPlatformBuildOptions(toolChainFamilyFlag);\r
+ String[][] options = saq.getPlatformBuildOptions(toolChainFamilyFlag);\r
if (options == null || options.length == 0) {\r
return new ToolChainMap();\r
}\r
@param fvName current FV name\r
@param moduleName current module identification\r
**/\r
- private void updateFvs(String fvName, FpdModuleIdentification fpdModuleId) {\r
+ void updateFvs(String fvName, FpdModuleIdentification fpdModuleId) {\r
if (fvName == null || fvName.trim().length() == 0) {\r
fvName = "NULL";\r
}\r