**/\r
package org.tianocore.build.global;\r
\r
+import java.io.File;\r
+import java.util.HashMap;\r
+import java.util.HashSet;\r
+import java.util.Iterator;\r
+import java.util.List;\r
+import java.util.Map;\r
+import java.util.Set;\r
+import java.util.logging.Logger;\r
+\r
import org.apache.tools.ant.BuildException;\r
+import org.apache.tools.ant.Project;\r
import org.apache.xmlbeans.XmlObject;\r
import org.tianocore.DbPathAndFilename;\r
import org.tianocore.FrameworkDatabaseDocument;\r
import org.tianocore.ModuleSurfaceAreaDocument;\r
-import org.tianocore.PcdBuildDefinitionDocument;\r
import org.tianocore.ModuleSurfaceAreaDocument.ModuleSurfaceArea;\r
+import org.tianocore.PcdBuildDefinitionDocument;\r
import org.tianocore.build.id.FpdModuleIdentification;\r
import org.tianocore.build.id.ModuleIdentification;\r
import org.tianocore.build.id.PackageIdentification;\r
import org.tianocore.exception.EdkException;\r
import org.tianocore.logger.EdkLog;\r
\r
-import java.io.File;\r
-import java.util.HashMap;\r
-import java.util.HashSet;\r
-import java.util.Iterator;\r
-import java.util.List;\r
-import java.util.Map;\r
-import java.util.Set;\r
-import java.util.logging.Logger;\r
-\r
/**\r
GlobalData provide initializing, instoring, querying and update global data.\r
It is a bridge to intercommunicate between multiple component, such as AutoGen,\r
\r
private static final MemoryDatabaseManager pcdDbManager = new MemoryDatabaseManager();\r
\r
- \r
-\r
/**\r
Parse framework database (DB) and all SPD files listed in DB to initialize\r
the environment for next build. This method will only be executed only once\r
@throws BuildException\r
Framework Dababase or SPD or MSA file is not valid\r
**/\r
- public synchronized static void initInfo(String workspaceDatabaseFile, String workspaceDir, String toolsDefFilename) throws BuildException {\r
+ public synchronized static void initInfo(String workspaceDatabaseFile, String workspaceDir, String toolsDefFilename ) throws BuildException {\r
//\r
// ensure this method will be revoked only once\r
//\r
return;\r
}\r
globalFlag = true;\r
- \r
- //\r
+\r
+ // \r
// Backup workspace directory. It will be used by other method\r
//\r
GlobalData.workspaceDir = workspaceDir.replaceAll("(\\\\)", "/");\r
}\r
}\r
} catch (Exception e) {\r
- e.printStackTrace();\r
throw new BuildException("Parse workspace Database [" + dbFile.getPath() + "] Error.\n" + e.getMessage());\r
}\r
}\r
moduleToolChainFamilyOption.put(fpdModuleId, toolChainOption);\r
}\r
\r
+ public static boolean isCommandSet(String target, String toolchain, String arch) {\r
+ String[] commands = getToolChainInfo().getCommands();\r
+\r
+ for (int i = 0; i < commands.length; ++i) {\r
+ String cmdName = toolsDef.getConfig().get(new String[] {target, toolchain, arch, commands[i], ToolChainAttribute.NAME.toString()});\r
+ if (cmdName != null && cmdName.length() != 0) {\r
+ return true;\r
+ }\r
+ }\r
+\r
+ return false;\r
+ }\r
+\r
public static String getCommandSetting(String[] commandDescription, FpdModuleIdentification fpdModuleId) throws EdkException {\r
ToolChainKey toolChainKey = new ToolChainKey(commandDescription);\r
ToolChainMap toolChainConfig = toolsDef.getConfig(); \r