X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=Tools%2FSource%2FGenBuild%2Forg%2Ftianocore%2Fbuild%2Fglobal%2FGlobalData.java;h=19725167c555a342a5480f7cc51c2098c54054c3;hp=195f2e93aaa6959d11ccdbf1573e1c7a832a845c;hb=196ad8d77c4a256e6a9b432541d688d2f40f4614;hpb=548ce97a813956f85c379aae88599e4c19ef1bb9 diff --git a/Tools/Source/GenBuild/org/tianocore/build/global/GlobalData.java b/Tools/Source/GenBuild/org/tianocore/build/global/GlobalData.java index 195f2e93aa..19725167c5 100644 --- a/Tools/Source/GenBuild/org/tianocore/build/global/GlobalData.java +++ b/Tools/Source/GenBuild/org/tianocore/build/global/GlobalData.java @@ -16,13 +16,23 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/ package org.tianocore.build.global; +import java.io.File; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.logging.Logger; + import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.Project; import org.apache.xmlbeans.XmlObject; import org.tianocore.DbPathAndFilename; import org.tianocore.FrameworkDatabaseDocument; import org.tianocore.ModuleSurfaceAreaDocument; -import org.tianocore.PcdBuildDefinitionDocument; import org.tianocore.ModuleSurfaceAreaDocument.ModuleSurfaceArea; +import org.tianocore.PcdBuildDefinitionDocument; import org.tianocore.build.id.FpdModuleIdentification; import org.tianocore.build.id.ModuleIdentification; import org.tianocore.build.id.PackageIdentification; @@ -37,15 +47,6 @@ import org.tianocore.build.toolchain.ToolChainMap; import org.tianocore.exception.EdkException; import org.tianocore.logger.EdkLog; -import java.io.File; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.logging.Logger; - /** GlobalData provide initializing, instoring, querying and update global data. It is a bridge to intercommunicate between multiple component, such as AutoGen, @@ -133,8 +134,6 @@ public class GlobalData { private static final MemoryDatabaseManager pcdDbManager = new MemoryDatabaseManager(); - - /** Parse framework database (DB) and all SPD files listed in DB to initialize the environment for next build. This method will only be executed only once @@ -145,7 +144,7 @@ public class GlobalData { @throws BuildException Framework Dababase or SPD or MSA file is not valid **/ - public synchronized static void initInfo(String workspaceDatabaseFile, String workspaceDir, String toolsDefFilename) throws BuildException { + public synchronized static void initInfo(String workspaceDatabaseFile, String workspaceDir, String toolsDefFilename ) throws BuildException { // // ensure this method will be revoked only once // @@ -153,8 +152,8 @@ public class GlobalData { return; } globalFlag = true; - - // + + // // Backup workspace directory. It will be used by other method // GlobalData.workspaceDir = workspaceDir.replaceAll("(\\\\)", "/"); @@ -166,8 +165,7 @@ public class GlobalData { // If ToolChain has been set up before, do nothing. // CONF dir + tools definition file name // - String confDir = GlobalData.workspaceDir + File.separatorChar + "Tools" + File.separatorChar + "Conf"; - File toolsDefFile = new File(confDir + File.separatorChar + toolsDefFilename); + File toolsDefFile = new File(workspaceDir + File.separatorChar + toolsDefFilename); System.out.println("Using file [" + toolsDefFile.getPath() + "] as tools definition file. "); toolsDef = new ToolChainConfig(toolsDefFile); @@ -231,7 +229,6 @@ public class GlobalData { } } } catch (Exception e) { - e.printStackTrace(); throw new BuildException("Parse workspace Database [" + dbFile.getPath() + "] Error.\n" + e.getMessage()); } } @@ -576,21 +573,27 @@ public class GlobalData { } - /////////////////////////// Update!! Update!! Update!! -// public synchronized static MemoryDatabaseManager getPCDMemoryDBManager() { -// return pcdDbManager; -// } - /////////////////////////// - public synchronized static PlatformIdentification getPlatform(String name) throws BuildException { + public synchronized static PlatformIdentification getPlatformByName(String name) throws BuildException { Iterator iter = platformList.iterator(); while(iter.hasNext()){ PlatformIdentification platformId = (PlatformIdentification)iter.next(); if (platformId.getName().equalsIgnoreCase(name)) { -// GlobalData.log.info("Platform: " + platformId + platformId.getFpdFile()); return platformId; } } - throw new BuildException("Can't find platform [" + name + "] in current workspace. "); + throw new BuildException("Can't find platform [" + name + "] in current workspace database. "); + } + + public synchronized static PlatformIdentification getPlatform(String filename) throws BuildException { + File file = new File(workspaceDir + File.separatorChar + filename); + Iterator iter = platformList.iterator(); + while(iter.hasNext()){ + PlatformIdentification platformId = (PlatformIdentification)iter.next(); + if (platformId.getFpdFile().getPath().equalsIgnoreCase(file.getPath())) { + return platformId; + } + } + throw new BuildException("Can't find platform file [" + filename + "] in current workspace database. "); } public synchronized static PackageIdentification refreshPackageIdentification(PackageIdentification packageId) throws BuildException { @@ -684,6 +687,19 @@ public class GlobalData { moduleToolChainFamilyOption.put(fpdModuleId, toolChainOption); } + public static boolean isCommandSet(String target, String toolchain, String arch) { + String[] commands = getToolChainInfo().getCommands(); + + for (int i = 0; i < commands.length; ++i) { + String cmdName = toolsDef.getConfig().get(new String[] {target, toolchain, arch, commands[i], ToolChainAttribute.NAME.toString()}); + if (cmdName != null && cmdName.length() != 0) { + return true; + } + } + + return false; + } + public static String getCommandSetting(String[] commandDescription, FpdModuleIdentification fpdModuleId) throws EdkException { ToolChainKey toolChainKey = new ToolChainKey(commandDescription); ToolChainMap toolChainConfig = toolsDef.getConfig();