mirror of https://github.com/acidanthera/audk.git
Remove some unused code and adjust some code format. Modules build with FPD sequence. Delete three unused Java files.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1179 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
802e005517
commit
01413f0ccb
|
@ -3,9 +3,6 @@ bl = org.tianocore.build.global.VariableTask
|
||||||
GenBuild = org.tianocore.build.GenBuildTask
|
GenBuild = org.tianocore.build.GenBuildTask
|
||||||
FrameworkBuild = org.tianocore.build.FrameworkBuildTask
|
FrameworkBuild = org.tianocore.build.FrameworkBuildTask
|
||||||
OnDependency = org.tianocore.build.global.OnDependency
|
OnDependency = org.tianocore.build.global.OnDependency
|
||||||
ToolChainSetup = org.tianocore.build.toolchain.ToolChainTask
|
|
||||||
OutputDirSetup = org.tianocore.build.OutputDirSetup
|
|
||||||
sourcefiles = org.tianocore.build.global.DpFileList
|
sourcefiles = org.tianocore.build.global.DpFileList
|
||||||
targetfiles = org.tianocore.build.global.DpFileList
|
targetfiles = org.tianocore.build.global.DpFileList
|
||||||
file = org.tianocore.build.global.DpFile
|
file = org.tianocore.build.global.DpFile
|
||||||
DefaultBuildFileGenerator = org.tianocore.build.tools.DefaultBuildFileGenerator
|
|
||||||
|
|
|
@ -16,7 +16,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
package org.tianocore.build;
|
package org.tianocore.build;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Hashtable;
|
import java.util.Hashtable;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.LinkedHashSet;
|
import java.util.LinkedHashSet;
|
||||||
|
@ -719,60 +718,6 @@ public class GenBuildTask extends Ant {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
Generate the flags string with original format. The format is defined by
|
|
||||||
Java Regulation Expression "[^\\\\]?(\".*?[^\\\\]\")[ \t,]+". </p>
|
|
||||||
|
|
||||||
<p>For example: </p>
|
|
||||||
|
|
||||||
<pre>
|
|
||||||
"/nologo", "/W3", "/WX"
|
|
||||||
"/C", "/DSTRING_DEFINES_FILE=\"BdsStrDefs.h\""
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
@param add the add flags set
|
|
||||||
@param sub the sub flags set
|
|
||||||
@return flags with original format
|
|
||||||
**/
|
|
||||||
private String getRawFlags(Set<String> add, Set<String> sub) {
|
|
||||||
String result = null;
|
|
||||||
add.removeAll(sub);
|
|
||||||
Iterator iter = add.iterator();
|
|
||||||
while (iter.hasNext()) {
|
|
||||||
String str = (String) iter.next();
|
|
||||||
result += "\"" + str.substring(1, str.length() - 1) + "\", ";
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
private String parseOptionString(String optionString, Set<String> addSet, Set<String> subSet) {
|
|
||||||
boolean overrideOption = false;
|
|
||||||
Pattern pattern = Pattern.compile("ADD\\.\\[(.+)\\]");
|
|
||||||
Matcher matcher = pattern.matcher(optionString);
|
|
||||||
|
|
||||||
while (matcher.find()) {
|
|
||||||
overrideOption = true;
|
|
||||||
String addOption = optionString.substring(matcher.start(1), matcher.end(1)).trim();
|
|
||||||
putFlagsToSet(addSet, addOption);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
pattern = Pattern.compile("SUB\\.\\[(.+)\\]");
|
|
||||||
matcher = pattern.matcher(optionString);
|
|
||||||
|
|
||||||
while (matcher.find()) {
|
|
||||||
overrideOption = true;
|
|
||||||
String subOption = optionString.substring(matcher.start(1), matcher.end(1)).trim();
|
|
||||||
putFlagsToSet(subSet, subOption);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (overrideOption == true) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return optionString;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void pushProperties() {
|
private void pushProperties() {
|
||||||
backupPropertiesStack.push(getProject().getProperties());
|
backupPropertiesStack.push(getProject().getProperties());
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,270 +0,0 @@
|
||||||
package org.tianocore.build;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.apache.tools.ant.BuildException;
|
|
||||||
import org.apache.tools.ant.Task;
|
|
||||||
import org.apache.xmlbeans.XmlObject;
|
|
||||||
import org.tianocore.build.fpd.FpdParserTask;
|
|
||||||
import org.tianocore.build.global.GlobalData;
|
|
||||||
import org.tianocore.build.global.SurfaceAreaQuery;
|
|
||||||
import org.tianocore.build.id.ModuleIdentification;
|
|
||||||
import org.tianocore.build.id.PackageIdentification;
|
|
||||||
import org.tianocore.build.id.PlatformIdentification;
|
|
||||||
|
|
||||||
public class OutputDirSetup extends Task {
|
|
||||||
///
|
|
||||||
/// Module surface area file.
|
|
||||||
///
|
|
||||||
File msaFile;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Module's Identification.
|
|
||||||
///
|
|
||||||
private ModuleIdentification moduleId;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Module's component type, such as SEC, LIBRARY, BS_DRIVER and so on.
|
|
||||||
///
|
|
||||||
private String componentType;
|
|
||||||
|
|
||||||
private boolean isSingleModuleBuild = false;
|
|
||||||
// private ToolChainFactory toolChainFactory;
|
|
||||||
|
|
||||||
/**
|
|
||||||
Public construct method. It is necessary for ANT task.
|
|
||||||
**/
|
|
||||||
public OutputDirSetup() {
|
|
||||||
}
|
|
||||||
|
|
||||||
public void execute() throws BuildException {
|
|
||||||
//
|
|
||||||
// Global Data initialization
|
|
||||||
//
|
|
||||||
// GlobalData.initInfo("Tools" + File.separatorChar + "Conf" + File.separatorChar + "FrameworkDatabase.db",
|
|
||||||
// getProject().getProperty("WORKSPACE_DIR"));
|
|
||||||
|
|
||||||
//
|
|
||||||
// Parse MSA and get the basic information
|
|
||||||
// Including BaseName, GUID, Version, ComponentType and SupportedArchs
|
|
||||||
//
|
|
||||||
Map<String, XmlObject> doc = GlobalData.getNativeMsa(msaFile);
|
|
||||||
|
|
||||||
SurfaceAreaQuery.setDoc(doc);
|
|
||||||
|
|
||||||
//
|
|
||||||
// String[]: {BaseName, ModuleType, ComponentType, Guid, Version}
|
|
||||||
//
|
|
||||||
moduleId = SurfaceAreaQuery.getMsaHeader();
|
|
||||||
// REMOVE!!! TBD
|
|
||||||
componentType = "APPLICATION";
|
|
||||||
|
|
||||||
//
|
|
||||||
// Judge whether it is single module build or not
|
|
||||||
//
|
|
||||||
if (isSingleModuleBuild) {
|
|
||||||
//
|
|
||||||
// Single Module build
|
|
||||||
//
|
|
||||||
prepareSingleModuleBuild();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
//
|
|
||||||
// Platform build
|
|
||||||
//
|
|
||||||
String filename = getProject().getProperty("PLATFORM_FILE");
|
|
||||||
PlatformIdentification platformId = GlobalData.getPlatform(filename);
|
|
||||||
getProject().setProperty("PLATFORM_DIR", platformId.getFpdFile().getParent().replaceAll("(\\\\)", "/"));
|
|
||||||
getProject().setProperty("PLATFORM_RELATIVE_DIR", platformId.getPlatformRelativeDir().replaceAll("(\\\\)", "/"));
|
|
||||||
|
|
||||||
String packageName = getProject().getProperty("PACKAGE");
|
|
||||||
String packageGuid = getProject().getProperty("PACKAGE_GUID");
|
|
||||||
String packageVersion = getProject().getProperty("PACKAGE_VERSION");
|
|
||||||
PackageIdentification packageId = new PackageIdentification(packageName, packageGuid, packageVersion);
|
|
||||||
moduleId.setPackage(packageId);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Tools Definition file parse
|
|
||||||
//
|
|
||||||
parseToolsDefinitionFile();
|
|
||||||
|
|
||||||
//
|
|
||||||
// For Every TOOLCHAIN, TARGET, ARCH
|
|
||||||
//
|
|
||||||
// String[] targetList = GlobalData.getTargets();
|
|
||||||
// for (int i = 0; i < targetList.length; i ++){
|
|
||||||
// //
|
|
||||||
// // Prepare for target related common properties
|
|
||||||
// // TARGET
|
|
||||||
// //
|
|
||||||
// getProject().setProperty("TARGET", targetList[i]);
|
|
||||||
// String[] toolchainList = GlobalData.getToolChains();
|
|
||||||
// for(int j = 0; j < toolchainList.length; j ++){
|
|
||||||
// //
|
|
||||||
// // Prepare for toolchain related common properties
|
|
||||||
// // TOOLCHAIN
|
|
||||||
// //
|
|
||||||
// getProject().setProperty("TOOLCHAIN", toolchainList[j]);
|
|
||||||
// //
|
|
||||||
// // If single module : intersection MSA supported ARCHs and tools def!!
|
|
||||||
// // else, get arch from pass down
|
|
||||||
// //
|
|
||||||
// String[] archList = GlobalData.getArchs();
|
|
||||||
// for (int k = 0; k < archList.length; k++) {
|
|
||||||
//
|
|
||||||
// FpdModuleIdentification fpdModuleId = new FpdModuleIdentification(moduleId, archList[k]);
|
|
||||||
//
|
|
||||||
// SurfaceAreaQuery.setDoc(GlobalData.getDoc(fpdModuleId));
|
|
||||||
//
|
|
||||||
// //
|
|
||||||
// // Prepare for all other common properties
|
|
||||||
// // PACKAGE, PACKAGE_GUID, PACKAGE_VERSION, PACKAGE_DIR, PACKAGE_RELATIVE_DIR
|
|
||||||
// // MODULE or BASE_NAME, GUID or FILE_GUID, VERSION, COMPONENT_TYPE
|
|
||||||
// // MODULE_DIR, MODULE_RELATIVE_DIR
|
|
||||||
// // SUBSYSTEM, ENTRYPOINT, EBC_TOOL_LIB_PATH
|
|
||||||
// // LIBS, OBJECTS, SDB_FILES
|
|
||||||
// //
|
|
||||||
// getProject().setProperty("ARCH", archList[k]);
|
|
||||||
// setModuleCommonProperties();
|
|
||||||
//
|
|
||||||
// //
|
|
||||||
// // String[0] is build mode. String[1] is user-defined output dir.
|
|
||||||
// //
|
|
||||||
// String buildMode = SurfaceAreaQuery.getFpdIntermediateDirectories();
|
|
||||||
// String userDefinedOutputDir = SurfaceAreaQuery.getFpdOutputDirectory();
|
|
||||||
//
|
|
||||||
// //
|
|
||||||
// // OutputManage prepare for
|
|
||||||
// // BIN_DIR, DEST_DIR_DEBUG, DEST_DIR_OUTPUT, BUILD_DIR, FV_DIR
|
|
||||||
// //
|
|
||||||
// OutputManager.getInstance().update(getProject(), userDefinedOutputDir, buildMode);
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void prepareSingleModuleBuild(){
|
|
||||||
//
|
|
||||||
// Find out the package which the module belongs to
|
|
||||||
// TBD: Enhance it!!!!
|
|
||||||
//
|
|
||||||
PackageIdentification packageId = GlobalData.getPackageForModule(moduleId);
|
|
||||||
|
|
||||||
moduleId.setPackage(packageId);
|
|
||||||
|
|
||||||
//
|
|
||||||
// Read ACTIVE_PLATFORM's FPD file (Call FpdParserTask's method)
|
|
||||||
//
|
|
||||||
String filename = getProject().getProperty("PLATFORM_FILE");
|
|
||||||
|
|
||||||
PlatformIdentification platformId = GlobalData.getPlatform(filename);
|
|
||||||
|
|
||||||
//
|
|
||||||
// Read FPD file
|
|
||||||
//
|
|
||||||
FpdParserTask fpdParser = new FpdParserTask();
|
|
||||||
fpdParser.parseFpdFile(platformId.getFpdFile());
|
|
||||||
|
|
||||||
//
|
|
||||||
// Prepare for Platform related common properties
|
|
||||||
// PLATFORM, PLATFORM_DIR, PLATFORM_RELATIVE_DIR
|
|
||||||
//
|
|
||||||
getProject().setProperty("PLATFORM", platformId.getName());
|
|
||||||
getProject().setProperty("PLATFORM_DIR", platformId.getFpdFile().getParent().replaceAll("(\\\\)", "/"));
|
|
||||||
getProject().setProperty("PLATFORM_RELATIVE_DIR", platformId.getPlatformRelativeDir().replaceAll("(\\\\)", "/"));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
|
|
||||||
**/
|
|
||||||
private void setModuleCommonProperties() {
|
|
||||||
//
|
|
||||||
// Prepare for all other common properties
|
|
||||||
// PACKAGE, PACKAGE_GUID, PACKAGE_VERSION, PACKAGE_DIR, PACKAGE_RELATIVE_DIR
|
|
||||||
//
|
|
||||||
PackageIdentification packageId = moduleId.getPackage();
|
|
||||||
getProject().setProperty("PACKAGE", packageId.getName());
|
|
||||||
getProject().setProperty("PACKAGE_GUID", packageId.getGuid());
|
|
||||||
getProject().setProperty("PACKAGE_VERSION", packageId.getVersion());
|
|
||||||
GlobalData.log.info("" + packageId);
|
|
||||||
getProject().setProperty("PACKAGE_DIR", packageId.getPackageDir().replaceAll("(\\\\)", "/"));
|
|
||||||
getProject().setProperty("PACKAGE_RELATIVE_DIR", packageId.getPackageRelativeDir().replaceAll("(\\\\)", "/"));
|
|
||||||
|
|
||||||
//
|
|
||||||
// MODULE or BASE_NAME, GUID or FILE_GUID, VERSION, COMPONENT_TYPE
|
|
||||||
// MODULE_DIR, MODULE_RELATIVE_DIR
|
|
||||||
//
|
|
||||||
getProject().setProperty("MODULE", moduleId.getName());
|
|
||||||
getProject().setProperty("BASE_NAME", moduleId.getName());
|
|
||||||
getProject().setProperty("GUID", moduleId.getGuid());
|
|
||||||
getProject().setProperty("FILE_GUID", moduleId.getGuid());
|
|
||||||
getProject().setProperty("VERSION", moduleId.getVersion());
|
|
||||||
getProject().setProperty("COMPONENT_TYPE", componentType);
|
|
||||||
getProject().setProperty("MODULE_DIR", moduleId.getMsaFile().getParent().replaceAll("(\\\\)", "/"));
|
|
||||||
getProject().setProperty("MODULE_RELATIVE_DIR", moduleId.getModuleRelativePath().replaceAll("(\\\\)", "/"));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
Method is for ANT use to initialize MSA file.
|
|
||||||
|
|
||||||
@param msaFilename MSA file name
|
|
||||||
**/
|
|
||||||
public void setMsaFile(String msaFilename) {
|
|
||||||
String moduleDir = getProject().getProperty("MODULE_DIR");
|
|
||||||
if (moduleDir == null) {
|
|
||||||
moduleDir = getProject().getBaseDir().getPath();
|
|
||||||
}
|
|
||||||
msaFile = new File(moduleDir + File.separatorChar + msaFilename);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Compile flags setup.
|
|
||||||
|
|
||||||
<p> Take command <code>CC</code> and arch <code>IA32</code> for example,
|
|
||||||
Those flags are from <code>ToolChainFactory</code>: </p>
|
|
||||||
<ul>
|
|
||||||
<li> IA32_CC </li>
|
|
||||||
<li> IA32_CC_STD_FLAGS </li>
|
|
||||||
<li> IA32_CC_GLOBAL_FLAGS </li>
|
|
||||||
<li> IA32_CC_GLOBAL_ADD_FLAGS </li>
|
|
||||||
<li> IA32_CC_GLOBAL_SUB_FLAGS </li>
|
|
||||||
</ul>
|
|
||||||
Those flags can user-define:
|
|
||||||
<ul>
|
|
||||||
<li> IA32_CC_PROJ_FLAGS </li>
|
|
||||||
<li> IA32_CC_PROJ_ADD_FLAGS </li>
|
|
||||||
<li> IA32_CC_PROJ_SUB_FLAGS </li>
|
|
||||||
<li> CC_PROJ_FLAGS </li>
|
|
||||||
<li> CC_PROJ_ADD_FLAGS </li>
|
|
||||||
<li> CC_PROJ_SUB_FLAGS </li>
|
|
||||||
<li> CC_FLAGS </li>
|
|
||||||
<li> IA32_CC_FLAGS </li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<p> The final flags is composed of STD, GLOBAL and PROJ. If CC_FLAGS or
|
|
||||||
IA32_CC_FLAGS is specified, STD, GLOBAL and PROJ will not affect. </p>
|
|
||||||
|
|
||||||
Note that the <code>ToolChainFactory</code> executes only once
|
|
||||||
during whole build process.
|
|
||||||
**/
|
|
||||||
private void parseToolsDefinitionFile() {
|
|
||||||
//
|
|
||||||
// If ToolChain has been set up before, do nothing.
|
|
||||||
// CONF dir + tools definition file name
|
|
||||||
//
|
|
||||||
String confDir = GlobalData.getWorkspacePath() + File.separatorChar + "Tools" + File.separatorChar + "Conf";
|
|
||||||
String toolsDefFilename = "tools_def.txt";
|
|
||||||
if (getProject().getProperty("env.TOOLS_DEF") != null) {
|
|
||||||
toolsDefFilename = getProject().getProperty("env.TOOLS_DEF");
|
|
||||||
}
|
|
||||||
// toolChainFactory = new ToolChainFactory(confDir, toolsDefFilename);
|
|
||||||
// toolChainFactory.setupToolChain();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -25,7 +25,6 @@ import java.util.LinkedHashSet;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
import java.util.TreeMap;
|
|
||||||
|
|
||||||
import org.apache.tools.ant.BuildException;
|
import org.apache.tools.ant.BuildException;
|
||||||
import org.apache.tools.ant.Task;
|
import org.apache.tools.ant.Task;
|
||||||
|
@ -98,11 +97,6 @@ public class FpdParserTask extends Task {
|
||||||
///
|
///
|
||||||
private Map<String, Set<FpdModuleIdentification>> fvs = new HashMap<String, Set<FpdModuleIdentification>>();
|
private Map<String, Set<FpdModuleIdentification>> fvs = new HashMap<String, Set<FpdModuleIdentification>>();
|
||||||
|
|
||||||
///
|
|
||||||
/// Mapping from sequence number to FV names
|
|
||||||
///
|
|
||||||
private Map<String, Set<String>> sequences = new TreeMap<String, Set<String>>();
|
|
||||||
|
|
||||||
///
|
///
|
||||||
/// FpdParserTask can specify some ANT properties.
|
/// FpdParserTask can specify some ANT properties.
|
||||||
///
|
///
|
||||||
|
@ -152,10 +146,6 @@ public class FpdParserTask extends Task {
|
||||||
//
|
//
|
||||||
isUnified = OutputManager.getInstance().prepareBuildDir(getProject());
|
isUnified = OutputManager.getInstance().prepareBuildDir(getProject());
|
||||||
|
|
||||||
//
|
|
||||||
// Generate FDF (Flash Definition File) file
|
|
||||||
//
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// For every Target and ToolChain
|
// For every Target and ToolChain
|
||||||
//
|
//
|
||||||
|
@ -183,7 +173,7 @@ public class FpdParserTask extends Task {
|
||||||
//
|
//
|
||||||
// Gen build.xml
|
// Gen build.xml
|
||||||
//
|
//
|
||||||
PlatformBuildFileGenerator fileGenerator = new PlatformBuildFileGenerator(getProject(), outfiles, fvs, sequences, isUnified);
|
PlatformBuildFileGenerator fileGenerator = new PlatformBuildFileGenerator(getProject(), outfiles, isUnified);
|
||||||
fileGenerator.genBuildFile();
|
fileGenerator.genBuildFile();
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -426,8 +416,7 @@ public class FpdParserTask extends Task {
|
||||||
SurfaceAreaQuery.pop();
|
SurfaceAreaQuery.pop();
|
||||||
|
|
||||||
fpdModuleId.setFvBinding(fvBinding);
|
fpdModuleId.setFvBinding(fvBinding);
|
||||||
String fvSequence = fpdModuleId.getSequence();
|
updateFvs(fvBinding, fpdModuleId);
|
||||||
updateFvs(fvSequence, fvBinding, fpdModuleId);
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Prepare for out put file name
|
// Prepare for out put file name
|
||||||
|
@ -499,7 +488,7 @@ public class FpdParserTask extends Task {
|
||||||
@param fvName current FV name
|
@param fvName current FV name
|
||||||
@param moduleName current module identification
|
@param moduleName current module identification
|
||||||
**/
|
**/
|
||||||
private void updateFvs(String fvSequence, String fvName, FpdModuleIdentification fpdModuleId) {
|
private void updateFvs(String fvName, FpdModuleIdentification fpdModuleId) {
|
||||||
if (fvName == null || fvName.trim().length() == 0) {
|
if (fvName == null || fvName.trim().length() == 0) {
|
||||||
fvName = "NULL";
|
fvName = "NULL";
|
||||||
}
|
}
|
||||||
|
@ -517,19 +506,6 @@ public class FpdParserTask extends Task {
|
||||||
set.add(fpdModuleId);
|
set.add(fpdModuleId);
|
||||||
fvs.put(fvNameArray[i], set);
|
fvs.put(fvNameArray[i], set);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
// Put fvName to corresponding fvSequence
|
|
||||||
//
|
|
||||||
if (sequences.containsKey(fvSequence)) {
|
|
||||||
Set<String> set = sequences.get(fvSequence);
|
|
||||||
set.add(fvNameArray[i]);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
Set<String> set = new LinkedHashSet<String>();
|
|
||||||
set.add(fvNameArray[i]);
|
|
||||||
sequences.put(fvSequence, set);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -48,16 +48,6 @@ public class PlatformBuildFileGenerator {
|
||||||
///
|
///
|
||||||
private Map<FpdModuleIdentification, String> outfiles;
|
private Map<FpdModuleIdentification, String> outfiles;
|
||||||
|
|
||||||
///
|
|
||||||
/// Mapping from FV name to its modules
|
|
||||||
///
|
|
||||||
private Map<String, Set<FpdModuleIdentification>> fvs;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Mapping from sequence number to FV names
|
|
||||||
///
|
|
||||||
private Map<String, Set<String>> sequences;
|
|
||||||
|
|
||||||
private boolean isUnified = true;
|
private boolean isUnified = true;
|
||||||
|
|
||||||
private Project project;
|
private Project project;
|
||||||
|
@ -68,11 +58,9 @@ public class PlatformBuildFileGenerator {
|
||||||
+ "Abstract:\n"
|
+ "Abstract:\n"
|
||||||
+ "Auto-generated ANT build file for building of EFI Modules/Platforms\n";
|
+ "Auto-generated ANT build file for building of EFI Modules/Platforms\n";
|
||||||
|
|
||||||
public PlatformBuildFileGenerator(Project project, Map<FpdModuleIdentification, String> outfiles, Map<String, Set<FpdModuleIdentification>> fvs, Map<String, Set<String>> sequences, boolean isUnified){
|
public PlatformBuildFileGenerator(Project project, Map<FpdModuleIdentification, String> outfiles, boolean isUnified){
|
||||||
this.project = project;
|
this.project = project;
|
||||||
this.outfiles = outfiles;
|
this.outfiles = outfiles;
|
||||||
this.fvs = fvs;
|
|
||||||
this.sequences = sequences;
|
|
||||||
this.isUnified = isUnified;
|
this.isUnified = isUnified;
|
||||||
this.platformName = project.getProperty("PLATFORM");
|
this.platformName = project.getProperty("PLATFORM");
|
||||||
}
|
}
|
||||||
|
@ -117,35 +105,21 @@ public class PlatformBuildFileGenerator {
|
||||||
ele.setAttribute("environment", "env");
|
ele.setAttribute("environment", "env");
|
||||||
root.appendChild(ele);
|
root.appendChild(ele);
|
||||||
|
|
||||||
Set<String> sequenceKeys = sequences.keySet();
|
|
||||||
Iterator sequenceIter = sequenceKeys.iterator();
|
|
||||||
String dependsStr = "prebuild";
|
|
||||||
while (sequenceIter.hasNext()) {
|
|
||||||
String num = (String)sequenceIter.next();
|
|
||||||
if (dependsStr.length() > 0) {
|
|
||||||
dependsStr += " , ";
|
|
||||||
}
|
|
||||||
dependsStr += "modules" + num + ", fvs" + num;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Default Target
|
// Default Target
|
||||||
//
|
//
|
||||||
root.appendChild(document.createComment("Default target"));
|
root.appendChild(document.createComment("Default target"));
|
||||||
ele = document.createElement("target");
|
ele = document.createElement("target");
|
||||||
ele.setAttribute("name", "all");
|
ele.setAttribute("name", "all");
|
||||||
ele.setAttribute("depends", dependsStr + ", postbuild");
|
ele.setAttribute("depends", "prebuild, modules, fvs, postbuild");
|
||||||
root.appendChild(ele);
|
root.appendChild(ele);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Modules and Fvs Target
|
// Modules and Fvs Target
|
||||||
//
|
//
|
||||||
sequenceIter = sequenceKeys.iterator();
|
applyModules(document, root);
|
||||||
while (sequenceIter.hasNext()) {
|
|
||||||
String num = (String)sequenceIter.next();
|
applyFvs(document, root);
|
||||||
applyModules(document, root, num);
|
|
||||||
applyFvs(document, root, num);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Clean Target
|
// Clean Target
|
||||||
|
@ -194,82 +168,75 @@ public class PlatformBuildFileGenerator {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void applyModules(Document document, Node root, String num) {
|
private void applyModules(Document document, Node root) {
|
||||||
root.appendChild(document.createComment("Modules target"));
|
root.appendChild(document.createComment("Modules target"));
|
||||||
Element ele = document.createElement("target");
|
Element ele = document.createElement("target");
|
||||||
ele.setAttribute("name", "modules" + num);
|
ele.setAttribute("name", "modules");
|
||||||
|
|
||||||
Set<String> fvNameSet = sequences.get(num);
|
|
||||||
|
|
||||||
Iterator fvNameIter = fvNameSet.iterator();
|
Set<FpdModuleIdentification> set = outfiles.keySet();
|
||||||
while (fvNameIter.hasNext()) {
|
Iterator iter = set.iterator();
|
||||||
String fvName = (String)fvNameIter.next();
|
while (iter.hasNext()) {
|
||||||
Set<FpdModuleIdentification> set = fvs.get(fvName);
|
FpdModuleIdentification fpdModuleId = (FpdModuleIdentification) iter.next();
|
||||||
Iterator iter = set.iterator();
|
ModuleIdentification moduleId = fpdModuleId.getModule();
|
||||||
while (iter.hasNext()) {
|
Element moduleEle = document.createElement("GenBuild");
|
||||||
FpdModuleIdentification fpdModuleId = (FpdModuleIdentification) iter.next();
|
moduleEle.setAttribute("type", "build");
|
||||||
ModuleIdentification moduleId = fpdModuleId.getModule();
|
//
|
||||||
Element moduleEle = document.createElement("GenBuild");
|
// Inherit Properties.
|
||||||
moduleEle.setAttribute("type", "build");
|
//{"ARCH", "PACKAGE", "PACKAGE_GUID", "PACKAGE_VERSION", "MODULE_DIR"}
|
||||||
//
|
//
|
||||||
// Inherit Properties.
|
|
||||||
//{"ARCH", "PACKAGE", "PACKAGE_GUID", "PACKAGE_VERSION", "MODULE_DIR"}
|
//
|
||||||
//
|
// ARCH
|
||||||
|
//
|
||||||
//
|
Element property = document.createElement("property");
|
||||||
// ARCH
|
property.setAttribute("name", "ARCH");
|
||||||
//
|
property.setAttribute("value", fpdModuleId.getArch());
|
||||||
Element property = document.createElement("property");
|
moduleEle.appendChild(property);
|
||||||
property.setAttribute("name", "ARCH");
|
|
||||||
property.setAttribute("value", fpdModuleId.getArch());
|
|
||||||
moduleEle.appendChild(property);
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// MODULE_GUID
|
// MODULE_GUID
|
||||||
//
|
//
|
||||||
property = document.createElement("property");
|
property = document.createElement("property");
|
||||||
property.setAttribute("name", "MODULE_GUID");
|
property.setAttribute("name", "MODULE_GUID");
|
||||||
property.setAttribute("value", moduleId.getGuid());
|
property.setAttribute("value", moduleId.getGuid());
|
||||||
moduleEle.appendChild(property);
|
moduleEle.appendChild(property);
|
||||||
|
|
||||||
//
|
//
|
||||||
// MODULE_VERSION
|
// MODULE_VERSION
|
||||||
//
|
//
|
||||||
property = document.createElement("property");
|
property = document.createElement("property");
|
||||||
property.setAttribute("name", "MODULE_VERSION");
|
property.setAttribute("name", "MODULE_VERSION");
|
||||||
property.setAttribute("value", moduleId.getVersion());
|
property.setAttribute("value", moduleId.getVersion());
|
||||||
moduleEle.appendChild(property);
|
moduleEle.appendChild(property);
|
||||||
|
|
||||||
//
|
//
|
||||||
// PACKAGE_GUID
|
// PACKAGE_GUID
|
||||||
//
|
//
|
||||||
property = document.createElement("property");
|
property = document.createElement("property");
|
||||||
property.setAttribute("name", "PACKAGE_GUID");
|
property.setAttribute("name", "PACKAGE_GUID");
|
||||||
property.setAttribute("value", moduleId.getPackage().getGuid());
|
property.setAttribute("value", moduleId.getPackage().getGuid());
|
||||||
moduleEle.appendChild(property);
|
moduleEle.appendChild(property);
|
||||||
|
|
||||||
//
|
//
|
||||||
// PACKAGE_VERSION
|
// PACKAGE_VERSION
|
||||||
//
|
//
|
||||||
property = document.createElement("property");
|
property = document.createElement("property");
|
||||||
property.setAttribute("name", "PACKAGE_VERSION");
|
property.setAttribute("name", "PACKAGE_VERSION");
|
||||||
property.setAttribute("value", moduleId.getPackage().getVersion());
|
property.setAttribute("value", moduleId.getPackage().getVersion());
|
||||||
moduleEle.appendChild(property);
|
moduleEle.appendChild(property);
|
||||||
|
|
||||||
ele.appendChild(moduleEle);
|
ele.appendChild(moduleEle);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
root.appendChild(ele);
|
root.appendChild(ele);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void applyFvs(Document document, Node root, String num) {
|
private void applyFvs(Document document, Node root) {
|
||||||
Set<String> fvNameSet = sequences.get(num);
|
|
||||||
//
|
//
|
||||||
// FVS Target
|
// FVS Target
|
||||||
//
|
//
|
||||||
root.appendChild(document.createComment("FVs target"));
|
root.appendChild(document.createComment("FVs target"));
|
||||||
Element ele = document.createElement("target");
|
Element ele = document.createElement("target");
|
||||||
ele.setAttribute("name", "fvs" + num);
|
ele.setAttribute("name", "fvs");
|
||||||
|
|
||||||
//
|
//
|
||||||
// For every Target and ToolChain
|
// For every Target and ToolChain
|
||||||
|
@ -283,13 +250,11 @@ public class PlatformBuildFileGenerator {
|
||||||
+ toolchainList[j] + File.separatorChar + "FV";
|
+ toolchainList[j] + File.separatorChar + "FV";
|
||||||
String[] validFv = SurfaceAreaQuery.getFpdValidImageNames();
|
String[] validFv = SurfaceAreaQuery.getFpdValidImageNames();
|
||||||
for (int k = 0; k < validFv.length; k++) {
|
for (int k = 0; k < validFv.length; k++) {
|
||||||
if (fvNameSet.contains(validFv[k]) || ! isListInSequence(validFv[k])) {
|
String inputFile = fvOutputDir + "" + File.separatorChar + validFv[k].toUpperCase() + ".inf";
|
||||||
String inputFile = fvOutputDir + "" + File.separatorChar + validFv[k].toUpperCase() + ".inf";
|
Element fvEle = document.createElement("genfvimage");
|
||||||
Element fvEle = document.createElement("genfvimage");
|
fvEle.setAttribute("infFile", inputFile);
|
||||||
fvEle.setAttribute("infFile", inputFile);
|
fvEle.setAttribute("outputDir", fvOutputDir);
|
||||||
fvEle.setAttribute("outputDir", fvOutputDir);
|
ele.appendChild(fvEle);
|
||||||
ele.appendChild(fvEle);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -576,16 +541,4 @@ public class PlatformBuildFileGenerator {
|
||||||
}
|
}
|
||||||
return root;
|
return root;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isListInSequence(String fvName) {
|
|
||||||
Set<String> numbers = sequences.keySet();
|
|
||||||
Iterator<String> iter = numbers.iterator();
|
|
||||||
while (iter.hasNext()) {
|
|
||||||
Set<String> fvNameSet = sequences.get(iter.next());
|
|
||||||
if (fvNameSet.contains(fvName)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,32 +15,38 @@ package org.tianocore.build.id;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
This class is used to identify a module with BaseName, GUID, Version, PackageName
|
This class is used to identify a module with Module Guid, Module Version,
|
||||||
and ARCH.
|
Package Guid, Package Version and Arch.
|
||||||
|
|
||||||
@since GenBuild 1.0
|
@since GenBuild 1.0
|
||||||
**/
|
**/
|
||||||
public class FpdModuleIdentification {
|
public class FpdModuleIdentification {
|
||||||
|
|
||||||
private String arch;
|
private String arch;
|
||||||
|
|
||||||
private String fvBinding = "NULL"; // Optional
|
private String fvBinding = "NULL"; // Optional
|
||||||
|
|
||||||
private String sequence = "0"; // Optional
|
|
||||||
|
|
||||||
private ModuleIdentification module;
|
private ModuleIdentification module;
|
||||||
|
|
||||||
private String target; // Optional
|
/**
|
||||||
|
Constructor Method.
|
||||||
private String toolchain; // Optional
|
|
||||||
|
@param arch Build Arch
|
||||||
public FpdModuleIdentification(String arch, String fvBinding, String sequence, ModuleIdentification module){
|
@param fvBinding Belong to what FVs
|
||||||
|
@param module ModuleIdentification
|
||||||
|
**/
|
||||||
|
public FpdModuleIdentification(String arch, String fvBinding, ModuleIdentification module){
|
||||||
this.arch = arch;
|
this.arch = arch;
|
||||||
this.fvBinding = fvBinding;
|
this.fvBinding = fvBinding;
|
||||||
this.sequence = sequence;
|
|
||||||
this.module = module;
|
this.module = module;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Constructor Method.
|
||||||
|
|
||||||
|
@param arch Build Arch
|
||||||
|
@param module ModuleIdentification
|
||||||
|
**/
|
||||||
public FpdModuleIdentification(ModuleIdentification module, String arch){
|
public FpdModuleIdentification(ModuleIdentification module, String arch){
|
||||||
this.arch = arch;
|
this.arch = arch;
|
||||||
this.module = module;
|
this.module = module;
|
||||||
|
@ -66,42 +72,58 @@ public class FpdModuleIdentification {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@param fvBinding
|
||||||
|
**/
|
||||||
public void setFvBinding(String fvBinding) {
|
public void setFvBinding(String fvBinding) {
|
||||||
this.fvBinding = fvBinding;
|
this.fvBinding = fvBinding;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSequence(String sequence) {
|
/* (non-Javadoc)
|
||||||
this.sequence = sequence;
|
@see java.lang.Object#toString()
|
||||||
}
|
**/
|
||||||
|
|
||||||
public String toString(){
|
public String toString(){
|
||||||
return arch + ":" + module;
|
return arch + ":" + module;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@return String fvBinding
|
||||||
|
**/
|
||||||
public String getFvBinding() {
|
public String getFvBinding() {
|
||||||
return fvBinding;
|
return fvBinding;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getSequence() {
|
/**
|
||||||
return sequence;
|
@return ModuleIdentification module ID
|
||||||
}
|
**/
|
||||||
|
|
||||||
public ModuleIdentification getModule() {
|
public ModuleIdentification getModule() {
|
||||||
return module;
|
return module;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@param module Module Identification
|
||||||
|
**/
|
||||||
public void setModule(ModuleIdentification module) {
|
public void setModule(ModuleIdentification module) {
|
||||||
this.module = module;
|
this.module = module;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@return String arch
|
||||||
|
**/
|
||||||
public String getArch() {
|
public String getArch() {
|
||||||
return arch;
|
return arch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@param arch build ARCH
|
||||||
|
**/
|
||||||
public void setArch(String arch) {
|
public void setArch(String arch) {
|
||||||
this.arch = arch;
|
this.arch = arch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
@see java.lang.Object#hashCode()
|
||||||
|
**/
|
||||||
public int hashCode(){
|
public int hashCode(){
|
||||||
return module.hashCode();
|
return module.hashCode();
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,8 +13,12 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
|
|
||||||
package org.tianocore.build.id;
|
package org.tianocore.build.id;
|
||||||
|
|
||||||
import org.tianocore.build.global.GlobalData;
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
This class is used to identify with its GUID and Version.
|
||||||
|
|
||||||
|
@since GenBuild 1.0
|
||||||
|
**/
|
||||||
public class Identification {
|
public class Identification {
|
||||||
|
|
||||||
String name;
|
String name;
|
||||||
|
@ -23,19 +27,29 @@ public class Identification {
|
||||||
|
|
||||||
String version;
|
String version;
|
||||||
|
|
||||||
String type; // Optional
|
/**
|
||||||
|
@param name Name
|
||||||
|
@param guid Guid
|
||||||
|
@param version Version
|
||||||
|
**/
|
||||||
Identification(String name, String guid, String version){
|
Identification(String name, String guid, String version){
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.guid = guid;
|
this.guid = guid;
|
||||||
this.version = version;
|
this.version = version;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@param guid Guid
|
||||||
|
@param version Version
|
||||||
|
**/
|
||||||
Identification(String guid, String version){
|
Identification(String guid, String version){
|
||||||
this.guid = guid;
|
this.guid = guid;
|
||||||
this.version = version;
|
this.version = version;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
@see java.lang.Object#equals(java.lang.Object)
|
||||||
|
**/
|
||||||
public boolean equals(Object obj) {
|
public boolean equals(Object obj) {
|
||||||
if (obj instanceof Identification) {
|
if (obj instanceof Identification) {
|
||||||
Identification id = (Identification)obj;
|
Identification id = (Identification)obj;
|
||||||
|
@ -57,14 +71,23 @@ public class Identification {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@param name Name
|
||||||
|
**/
|
||||||
public void setName(String name) {
|
public void setName(String name) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@param guid Guid
|
||||||
|
**/
|
||||||
public void setGuid(String guid) {
|
public void setGuid(String guid) {
|
||||||
this.guid = guid;
|
this.guid = guid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@param version Version
|
||||||
|
**/
|
||||||
public void setVersion(String version) {
|
public void setVersion(String version) {
|
||||||
this.version = version;
|
this.version = version;
|
||||||
}
|
}
|
||||||
|
@ -73,14 +96,23 @@ public class Identification {
|
||||||
return guid;
|
return guid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@return String Name
|
||||||
|
**/
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@return String Version
|
||||||
|
**/
|
||||||
public String getVersion() {
|
public String getVersion() {
|
||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
@see java.lang.Object#hashCode()
|
||||||
|
**/
|
||||||
public int hashCode(){
|
public int hashCode(){
|
||||||
return guid.toLowerCase().hashCode();
|
return guid.toLowerCase().hashCode();
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,12 @@ package org.tianocore.build.id;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
||||||
import org.tianocore.build.global.GlobalData;
|
import org.tianocore.build.global.GlobalData;
|
||||||
|
/**
|
||||||
|
This class is used to identify a module with Module Guid, Module Version,
|
||||||
|
Package Guid, Package Version.
|
||||||
|
|
||||||
|
@since GenBuild 1.0
|
||||||
|
**/
|
||||||
public class ModuleIdentification extends Identification {
|
public class ModuleIdentification extends Identification {
|
||||||
|
|
||||||
private PackageIdentification packageId;
|
private PackageIdentification packageId;
|
||||||
|
@ -27,37 +32,69 @@ public class ModuleIdentification extends Identification {
|
||||||
|
|
||||||
private boolean isLibrary = false;
|
private boolean isLibrary = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
@param guid Guid
|
||||||
|
@param version Version
|
||||||
|
**/
|
||||||
public ModuleIdentification(String guid, String version){
|
public ModuleIdentification(String guid, String version){
|
||||||
super(guid, version);
|
super(guid, version);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@param guid Guid
|
||||||
|
@param version Version
|
||||||
|
@param packageId Package Identification
|
||||||
|
**/
|
||||||
public ModuleIdentification(String guid, String version, PackageIdentification packageId){
|
public ModuleIdentification(String guid, String version, PackageIdentification packageId){
|
||||||
super(guid, version);
|
super(guid, version);
|
||||||
this.packageId = packageId;
|
this.packageId = packageId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@param name Name
|
||||||
|
@param guid Guid
|
||||||
|
@param version Version
|
||||||
|
**/
|
||||||
public ModuleIdentification(String name, String guid, String version){
|
public ModuleIdentification(String name, String guid, String version){
|
||||||
super(name, guid, version);
|
super(name, guid, version);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@param name Name
|
||||||
|
@param guid Guid
|
||||||
|
@param version Version
|
||||||
|
@param packageId PackageIdentification
|
||||||
|
**/
|
||||||
public ModuleIdentification(String name, String guid, String version, PackageIdentification packageId){
|
public ModuleIdentification(String name, String guid, String version, PackageIdentification packageId){
|
||||||
super(name, guid, version);
|
super(name, guid, version);
|
||||||
this.packageId = packageId;
|
this.packageId = packageId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@return boolean is this module is library
|
||||||
|
**/
|
||||||
public boolean isLibrary() {
|
public boolean isLibrary() {
|
||||||
return isLibrary;
|
return isLibrary;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@param isLibrary
|
||||||
|
**/
|
||||||
public void setLibrary(boolean isLibrary) {
|
public void setLibrary(boolean isLibrary) {
|
||||||
this.isLibrary = isLibrary;
|
this.isLibrary = isLibrary;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@return MSA File
|
||||||
|
**/
|
||||||
public File getMsaFile() {
|
public File getMsaFile() {
|
||||||
prepareMsaFile();
|
prepareMsaFile();
|
||||||
return msaFile;
|
return msaFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@return Module relative path to package
|
||||||
|
**/
|
||||||
public String getModuleRelativePath() {
|
public String getModuleRelativePath() {
|
||||||
prepareMsaFile();
|
prepareMsaFile();
|
||||||
if (msaFile.getParent().length() == packageId.getPackageDir().length()) {
|
if (msaFile.getParent().length() == packageId.getPackageDir().length()) {
|
||||||
|
@ -72,6 +109,9 @@ public class ModuleIdentification extends Identification {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@param msaFile Set Msa File
|
||||||
|
**/
|
||||||
public void setMsaFile(File msaFile) {
|
public void setMsaFile(File msaFile) {
|
||||||
this.msaFile = msaFile;
|
this.msaFile = msaFile;
|
||||||
}
|
}
|
||||||
|
@ -109,14 +149,23 @@ public class ModuleIdentification extends Identification {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@param packageId set package identification
|
||||||
|
**/
|
||||||
public void setPackage(PackageIdentification packageId) {
|
public void setPackage(PackageIdentification packageId) {
|
||||||
this.packageId = packageId;
|
this.packageId = packageId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@return get package identification
|
||||||
|
**/
|
||||||
public PackageIdentification getPackage() {
|
public PackageIdentification getPackage() {
|
||||||
return packageId;
|
return packageId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@return get module type
|
||||||
|
**/
|
||||||
public String getModuleType() {
|
public String getModuleType() {
|
||||||
if (moduleType == null) {
|
if (moduleType == null) {
|
||||||
GlobalData.refreshModuleIdentification(this);
|
GlobalData.refreshModuleIdentification(this);
|
||||||
|
@ -124,6 +173,9 @@ public class ModuleIdentification extends Identification {
|
||||||
return moduleType;
|
return moduleType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@param moduleType set module type
|
||||||
|
**/
|
||||||
public void setModuleType(String moduleType) {
|
public void setModuleType(String moduleType) {
|
||||||
this.moduleType = moduleType;
|
this.moduleType = moduleType;
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,35 +16,69 @@ import java.io.File;
|
||||||
|
|
||||||
import org.tianocore.build.global.GlobalData;
|
import org.tianocore.build.global.GlobalData;
|
||||||
|
|
||||||
|
/**
|
||||||
|
This class is used to identify a package.
|
||||||
|
|
||||||
|
@since GenBuild 1.0
|
||||||
|
**/
|
||||||
public class PackageIdentification extends Identification{
|
public class PackageIdentification extends Identification{
|
||||||
|
|
||||||
//
|
//
|
||||||
// It is optional
|
// SPD file
|
||||||
//
|
//
|
||||||
private File spdFile;
|
private File spdFile;
|
||||||
|
|
||||||
|
/**
|
||||||
|
@param guid Guid
|
||||||
|
@param version Version
|
||||||
|
**/
|
||||||
public PackageIdentification(String guid, String version){
|
public PackageIdentification(String guid, String version){
|
||||||
super(guid, version);
|
super(guid, version);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@param name Name
|
||||||
|
@param guid Guid
|
||||||
|
@param version Version
|
||||||
|
**/
|
||||||
public PackageIdentification(String name, String guid, String version){
|
public PackageIdentification(String name, String guid, String version){
|
||||||
super(name, guid, version);
|
super(name, guid, version);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@param name Name
|
||||||
|
@param guid Guid
|
||||||
|
@param version Version
|
||||||
|
@param spdFilename SPD file name
|
||||||
|
**/
|
||||||
public PackageIdentification(String name, String guid, String version, String spdFilename){
|
public PackageIdentification(String name, String guid, String version, String spdFilename){
|
||||||
super(name, guid, version);
|
super(name, guid, version);
|
||||||
this.spdFile = new File(spdFilename);
|
this.spdFile = new File(spdFilename);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@param name Name
|
||||||
|
@param guid Guid
|
||||||
|
@param version Version
|
||||||
|
@param spdFile SPD file
|
||||||
|
**/
|
||||||
public PackageIdentification(String name, String guid, String version, File spdFile){
|
public PackageIdentification(String name, String guid, String version, File spdFile){
|
||||||
super(name, guid, version);
|
super(name, guid, version);
|
||||||
this.spdFile = spdFile;
|
this.spdFile = spdFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
set SPD file.
|
||||||
|
@param spdFile SPD file
|
||||||
|
**/
|
||||||
public void setSpdFile(File spdFile) {
|
public void setSpdFile(File spdFile) {
|
||||||
this.spdFile = spdFile;
|
this.spdFile = spdFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
get SPD file
|
||||||
|
@return SPD file
|
||||||
|
**/
|
||||||
public File getSpdFile() {
|
public File getSpdFile() {
|
||||||
return spdFile;
|
return spdFile;
|
||||||
}
|
}
|
||||||
|
@ -61,11 +95,19 @@ public class PackageIdentification extends Identification{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
get package directory
|
||||||
|
@return Package Directory
|
||||||
|
**/
|
||||||
public String getPackageDir(){
|
public String getPackageDir(){
|
||||||
prepareSpdFile();
|
prepareSpdFile();
|
||||||
return spdFile.getParent();
|
return spdFile.getParent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
get package relative directory.
|
||||||
|
@return package relative directory
|
||||||
|
**/
|
||||||
public String getPackageRelativeDir(){
|
public String getPackageRelativeDir(){
|
||||||
prepareSpdFile();
|
prepareSpdFile();
|
||||||
String relativeDir =spdFile.getParent().substring(GlobalData.getWorkspacePath().length());
|
String relativeDir =spdFile.getParent().substring(GlobalData.getWorkspacePath().length());
|
||||||
|
|
|
@ -16,23 +16,52 @@ import java.io.File;
|
||||||
|
|
||||||
import org.tianocore.build.global.GlobalData;
|
import org.tianocore.build.global.GlobalData;
|
||||||
|
|
||||||
|
/**
|
||||||
|
This class is used to identify a platform.
|
||||||
|
|
||||||
|
@since GenBuild 1.0
|
||||||
|
**/
|
||||||
public class PlatformIdentification extends Identification{
|
public class PlatformIdentification extends Identification{
|
||||||
|
|
||||||
|
///
|
||||||
|
/// FPD file
|
||||||
|
///
|
||||||
private File fpdFile;
|
private File fpdFile;
|
||||||
|
|
||||||
|
/**
|
||||||
|
@param guid Guid
|
||||||
|
@param version Version
|
||||||
|
**/
|
||||||
public PlatformIdentification(String guid, String version){
|
public PlatformIdentification(String guid, String version){
|
||||||
super(guid, version);
|
super(guid, version);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@param name Name
|
||||||
|
@param guid Guid
|
||||||
|
@param version Version
|
||||||
|
**/
|
||||||
public PlatformIdentification(String name, String guid, String version){
|
public PlatformIdentification(String name, String guid, String version){
|
||||||
super(name, guid, version);
|
super(name, guid, version);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@param name Name
|
||||||
|
@param guid Guid
|
||||||
|
@param version Version
|
||||||
|
@param fpdFilename Fpd File Name
|
||||||
|
**/
|
||||||
public PlatformIdentification(String name, String guid, String version, String fpdFilename){
|
public PlatformIdentification(String name, String guid, String version, String fpdFilename){
|
||||||
super(name, guid, version);
|
super(name, guid, version);
|
||||||
this.fpdFile = new File(fpdFilename);
|
this.fpdFile = new File(fpdFilename);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@param name Name
|
||||||
|
@param guid Guid
|
||||||
|
@param version Version
|
||||||
|
@param fpdFile Fpd File
|
||||||
|
**/
|
||||||
public PlatformIdentification(String name, String guid, String version, File fpdFile){
|
public PlatformIdentification(String name, String guid, String version, File fpdFile){
|
||||||
super(name, guid, version);
|
super(name, guid, version);
|
||||||
this.fpdFile = fpdFile;
|
this.fpdFile = fpdFile;
|
||||||
|
@ -42,14 +71,26 @@ public class PlatformIdentification extends Identification{
|
||||||
return "Platform " + name + "["+guid+"]";
|
return "Platform " + name + "["+guid+"]";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Set FPD file.
|
||||||
|
@param fpdFile FPD File
|
||||||
|
**/
|
||||||
public void setFpdFile(File fpdFile) {
|
public void setFpdFile(File fpdFile) {
|
||||||
this.fpdFile = fpdFile;
|
this.fpdFile = fpdFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Get FPD file.
|
||||||
|
@return Fpd File
|
||||||
|
**/
|
||||||
public File getFpdFile() {
|
public File getFpdFile() {
|
||||||
return fpdFile;
|
return fpdFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Get FPD relative file to workspace.
|
||||||
|
@return Fpd Relative file.
|
||||||
|
**/
|
||||||
public String getRelativeFpdFile (){
|
public String getRelativeFpdFile (){
|
||||||
String relativeDir = fpdFile.getPath().substring(GlobalData.getWorkspacePath().length());
|
String relativeDir = fpdFile.getPath().substring(GlobalData.getWorkspacePath().length());
|
||||||
if(relativeDir.startsWith("\\") || relativeDir.startsWith("/")) {
|
if(relativeDir.startsWith("\\") || relativeDir.startsWith("/")) {
|
||||||
|
@ -58,6 +99,10 @@ public class PlatformIdentification extends Identification{
|
||||||
return relativeDir;
|
return relativeDir;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Get Platform relative directory to workspace.
|
||||||
|
@return Platform relative directory
|
||||||
|
**/
|
||||||
public String getPlatformRelativeDir(){
|
public String getPlatformRelativeDir(){
|
||||||
String relativeDir = fpdFile.getParent().substring(GlobalData.getWorkspacePath().length());
|
String relativeDir = fpdFile.getParent().substring(GlobalData.getWorkspacePath().length());
|
||||||
if(relativeDir.startsWith("\\") || relativeDir.startsWith("/")) {
|
if(relativeDir.startsWith("\\") || relativeDir.startsWith("/")) {
|
||||||
|
|
|
@ -1,63 +0,0 @@
|
||||||
/** @file
|
|
||||||
ToolChainTask class.
|
|
||||||
|
|
||||||
ToolChainTask class's main fucntion is read all tool chain related config files.
|
|
||||||
|
|
||||||
Copyright (c) 2006, Intel Corporation
|
|
||||||
All rights reserved. This program and the accompanying materials
|
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
|
||||||
http://opensource.org/licenses/bsd-license.php
|
|
||||||
|
|
||||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
|
|
||||||
**/
|
|
||||||
package org.tianocore.build.toolchain;
|
|
||||||
|
|
||||||
import org.apache.tools.ant.BuildException;
|
|
||||||
import org.apache.tools.ant.Task;
|
|
||||||
|
|
||||||
/**
|
|
||||||
This class is an ANT task. The main function is to read all tool chain related
|
|
||||||
config files.
|
|
||||||
|
|
||||||
@since GenBuild 1.0
|
|
||||||
**/
|
|
||||||
public class ToolChainTask extends Task{
|
|
||||||
///
|
|
||||||
/// environment variable name of toolchain
|
|
||||||
///
|
|
||||||
static private String toolsEnv = "env.TOOLS_DEF";
|
|
||||||
///
|
|
||||||
/// configuration file path
|
|
||||||
///
|
|
||||||
private String confPath = ".";
|
|
||||||
|
|
||||||
/**
|
|
||||||
Public construct method. It is necessary for ANT task.
|
|
||||||
**/
|
|
||||||
public ToolChainTask(){
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
ANT task's entry point, will be called after init(). Using
|
|
||||||
<code>ToolChainFactory</code> to parse all config files, and
|
|
||||||
set TARGET property.
|
|
||||||
|
|
||||||
@throws BuildException
|
|
||||||
Config files are invalid.
|
|
||||||
**/
|
|
||||||
public void execute() throws BuildException {
|
|
||||||
String toolChain = getProject().getProperty(toolsEnv);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Set the path of config files.
|
|
||||||
|
|
||||||
@param confPath the path of config files
|
|
||||||
**/
|
|
||||||
public void setConfPath(String confPath) {
|
|
||||||
this.confPath = confPath;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,313 +0,0 @@
|
||||||
/** @file
|
|
||||||
This file is an ANT task.
|
|
||||||
|
|
||||||
LibBuildFileGenerator task is used to generate module's build.xml file.
|
|
||||||
|
|
||||||
Copyright (c) 2006, Intel Corporation
|
|
||||||
All rights reserved. This program and the accompanying materials
|
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
|
||||||
http://opensource.org/licenses/bsd-license.php
|
|
||||||
|
|
||||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
|
|
||||||
**/
|
|
||||||
package org.tianocore.build.tools;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.LinkedHashSet;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import javax.xml.parsers.DocumentBuilder;
|
|
||||||
import javax.xml.parsers.DocumentBuilderFactory;
|
|
||||||
import javax.xml.transform.OutputKeys;
|
|
||||||
import javax.xml.transform.Result;
|
|
||||||
import javax.xml.transform.Source;
|
|
||||||
import javax.xml.transform.Transformer;
|
|
||||||
import javax.xml.transform.TransformerFactory;
|
|
||||||
import javax.xml.transform.dom.DOMSource;
|
|
||||||
import javax.xml.transform.stream.StreamResult;
|
|
||||||
|
|
||||||
import org.apache.tools.ant.BuildException;
|
|
||||||
import org.apache.tools.ant.Task;
|
|
||||||
import org.tianocore.build.global.GlobalData;
|
|
||||||
import org.tianocore.build.id.ModuleIdentification;
|
|
||||||
import org.tianocore.build.id.PackageIdentification;
|
|
||||||
import org.w3c.dom.Document;
|
|
||||||
import org.w3c.dom.Element;
|
|
||||||
|
|
||||||
public class DefaultBuildFileGenerator extends Task {
|
|
||||||
|
|
||||||
private Set<ModuleIdentification> modules = new LinkedHashSet<ModuleIdentification>();
|
|
||||||
|
|
||||||
private Set<PackageIdentification> packages = new LinkedHashSet<PackageIdentification>();
|
|
||||||
|
|
||||||
//
|
|
||||||
// <DefaultBuildFileGenerator mode="WORKSPACE | PACKAGE | MODULE">
|
|
||||||
// <PackageItem packageName="" packageGuid="" packageVersion="" />
|
|
||||||
// <ModuleItem moduleName="HelloWorld" moduleGuid="" moduleVersion="" packageName="" packageGuid="" packageVersion="" />
|
|
||||||
// </DefaultBuildFileGenerator>
|
|
||||||
//
|
|
||||||
private String mode = "MODULE";
|
|
||||||
|
|
||||||
private String license = " Copyright (c) 2006, Intel Corporation \n"
|
|
||||||
+ "All rights reserved. This program and the accompanying materials \n"
|
|
||||||
+ "are licensed and made available under the terms and conditions of the BSD License \n"
|
|
||||||
+ "which accompanies this distribution. The full text of the license may be found at \n"
|
|
||||||
+ "http://opensource.org/licenses/bsd-license.php \n"
|
|
||||||
+ "\n"
|
|
||||||
+ "THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN \"AS IS\" BASIS, \n"
|
|
||||||
+ "WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.";
|
|
||||||
|
|
||||||
/**
|
|
||||||
Public construct method. It is necessary for ANT task.
|
|
||||||
**/
|
|
||||||
public DefaultBuildFileGenerator () {
|
|
||||||
}
|
|
||||||
|
|
||||||
public void execute() throws BuildException {
|
|
||||||
//
|
|
||||||
// Global Data initialization
|
|
||||||
//
|
|
||||||
GlobalData.initInfo("Tools" + File.separatorChar + "Conf" + File.separatorChar + "FrameworkDatabase.db",
|
|
||||||
getProject().getProperty("WORKSPACE_DIR"), "tools_def.txt");
|
|
||||||
|
|
||||||
if (mode.equalsIgnoreCase("WORKSPACE")) {
|
|
||||||
modules.clear();
|
|
||||||
packages = GlobalData.getPackageList();
|
|
||||||
}
|
|
||||||
else if (mode.equalsIgnoreCase("PACKAGE")) {
|
|
||||||
modules.clear();
|
|
||||||
}
|
|
||||||
if (mode.equalsIgnoreCase("WORKSPACE") || mode.equalsIgnoreCase("PACKAGE")) {
|
|
||||||
Iterator iter = packages.iterator();
|
|
||||||
while (iter.hasNext()) {
|
|
||||||
PackageIdentification packageId = (PackageIdentification)iter.next();
|
|
||||||
modules.addAll(GlobalData.getModules(packageId));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Iterator iter = modules.iterator();
|
|
||||||
while (iter.hasNext()) {
|
|
||||||
ModuleIdentification moduleId = (ModuleIdentification)iter.next();
|
|
||||||
genBuildFile (moduleId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void genBuildFile(ModuleIdentification moduleId) {
|
|
||||||
DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance();
|
|
||||||
try {
|
|
||||||
DocumentBuilder dombuilder = domfac.newDocumentBuilder();
|
|
||||||
Document document = dombuilder.newDocument();
|
|
||||||
//
|
|
||||||
// create root element and its attributes
|
|
||||||
//
|
|
||||||
document.appendChild(document.createComment(license));
|
|
||||||
Element root = document.createElement("project");
|
|
||||||
root.setAttribute("default", "all");
|
|
||||||
root.setAttribute("basedir", ".");
|
|
||||||
root.setAttribute("name", moduleId.getName());
|
|
||||||
|
|
||||||
//
|
|
||||||
// element for External ANT tasks
|
|
||||||
//
|
|
||||||
root.appendChild(document.createComment("Apply external ANT tasks"));
|
|
||||||
Element ele = document.createElement("taskdef");
|
|
||||||
ele.setAttribute("resource", "GenBuild.tasks");
|
|
||||||
root.appendChild(ele);
|
|
||||||
|
|
||||||
//
|
|
||||||
// <taskdef resource="net/sf/antcontrib/antlib.xml" />
|
|
||||||
//
|
|
||||||
ele = document.createElement("taskdef");
|
|
||||||
ele.setAttribute("resource", "net/sf/antcontrib/antlib.xml");
|
|
||||||
root.appendChild(ele);
|
|
||||||
|
|
||||||
ele = document.createElement("property");
|
|
||||||
ele.setAttribute("environment", "env");
|
|
||||||
root.appendChild(ele);
|
|
||||||
|
|
||||||
ele = document.createElement("property");
|
|
||||||
ele.setAttribute("name", "WORKSPACE_DIR");
|
|
||||||
ele.setAttribute("value", "${env.WORKSPACE}");
|
|
||||||
root.appendChild(ele);
|
|
||||||
|
|
||||||
ele = document.createElement("property");
|
|
||||||
ele.setAttribute("name", "MSA_FILENAME");
|
|
||||||
ele.setAttribute("value", GlobalData.getMsaFile(moduleId).getName());
|
|
||||||
root.appendChild(ele);
|
|
||||||
|
|
||||||
ele = document.createElement("property");
|
|
||||||
ele.setAttribute("name", "BASE_NAME");
|
|
||||||
ele.setAttribute("value", moduleId.getName());
|
|
||||||
root.appendChild(ele);
|
|
||||||
|
|
||||||
//
|
|
||||||
// Don't change it!!
|
|
||||||
//
|
|
||||||
ele = document.createElement("import");
|
|
||||||
ele.setAttribute("file", "${WORKSPACE_DIR}/Tools/Conf/BuildMacro.xml");
|
|
||||||
root.appendChild(ele);
|
|
||||||
|
|
||||||
//
|
|
||||||
// <target name="all">
|
|
||||||
// <GenBuild msaFile="HelloWorld.msa"/>
|
|
||||||
// </target>
|
|
||||||
//
|
|
||||||
Element targetEle = document.createElement("target");
|
|
||||||
targetEle.setAttribute("name", "all");
|
|
||||||
|
|
||||||
ele = document.createElement("GenBuild");
|
|
||||||
ele.setAttribute("msaFile", "${MSA_FILENAME}");
|
|
||||||
targetEle.appendChild(ele);
|
|
||||||
|
|
||||||
root.appendChild(targetEle);
|
|
||||||
|
|
||||||
//
|
|
||||||
// <target name="clean">
|
|
||||||
// <OutputDirSetup msaFile="HelloWorld.msa"/>
|
|
||||||
// <if>
|
|
||||||
// <available file="${DEST_DIR_OUTPUT}/HelloWorld_build.xml"/>
|
|
||||||
// <then>
|
|
||||||
// <ant antfile="${DEST_DIR_OUTPUT}/HelloWorld_build.xml" target="clean"/>
|
|
||||||
// </then>
|
|
||||||
// </if>
|
|
||||||
// <delete dir="${DEST_DIR_OUTPUT}" excludes="*.xml"/>
|
|
||||||
// </target>
|
|
||||||
//
|
|
||||||
targetEle = document.createElement("target");
|
|
||||||
targetEle.setAttribute("name", "clean");
|
|
||||||
|
|
||||||
ele = document.createElement("OutputDirSetup");
|
|
||||||
ele.setAttribute("msaFile", "${MSA_FILENAME}");
|
|
||||||
targetEle.appendChild(ele);
|
|
||||||
|
|
||||||
ele = document.createElement("if");
|
|
||||||
|
|
||||||
Element availableEle = document.createElement("available");
|
|
||||||
availableEle.setAttribute("file", "${DEST_DIR_OUTPUT}/${BASE_NAME}_build.xml");
|
|
||||||
ele.appendChild(availableEle);
|
|
||||||
|
|
||||||
Element thenEle = document.createElement("then");
|
|
||||||
Element antEle = document.createElement("ant");
|
|
||||||
antEle.setAttribute("antfile", "${DEST_DIR_OUTPUT}/${BASE_NAME}_build.xml");
|
|
||||||
antEle.setAttribute("target", "clean");
|
|
||||||
thenEle.appendChild(antEle);
|
|
||||||
ele.appendChild(thenEle);
|
|
||||||
targetEle.appendChild(ele);
|
|
||||||
|
|
||||||
ele = document.createElement("delete");
|
|
||||||
ele.setAttribute("dir", "${DEST_DIR_OUTPUT}");
|
|
||||||
ele.setAttribute("excludes", "*.xml");
|
|
||||||
targetEle.appendChild(ele);
|
|
||||||
|
|
||||||
root.appendChild(targetEle);
|
|
||||||
|
|
||||||
//
|
|
||||||
// <target name="cleanall">
|
|
||||||
// <OutputDirSetup msaFile="HelloWorld.msa"/>
|
|
||||||
// <if>
|
|
||||||
// <available file="${DEST_DIR_OUTPUT}/HelloWorld_build.xml"/>
|
|
||||||
// <then>
|
|
||||||
// <ant antfile="${DEST_DIR_OUTPUT}/HelloWorld_build.xml" target="cleanall"/>
|
|
||||||
// </then>
|
|
||||||
// </if>
|
|
||||||
// <delete dir="${DEST_DIR_OUTPUT}"/>
|
|
||||||
// <delete dir="${DEST_DIR_DEBUG}"/>
|
|
||||||
// <delete>
|
|
||||||
// <fileset dir="${BIN_DIR}" includes="**HelloWorld*"/>
|
|
||||||
// </delete>
|
|
||||||
// </target>
|
|
||||||
//
|
|
||||||
targetEle = document.createElement("target");
|
|
||||||
targetEle.setAttribute("name", "cleanall");
|
|
||||||
|
|
||||||
ele = document.createElement("OutputDirSetup");
|
|
||||||
ele.setAttribute("msaFile", "${MSA_FILENAME}");
|
|
||||||
targetEle.appendChild(ele);
|
|
||||||
|
|
||||||
ele = document.createElement("if");
|
|
||||||
|
|
||||||
availableEle = document.createElement("available");
|
|
||||||
availableEle.setAttribute("file", "${DEST_DIR_OUTPUT}/${BASE_NAME}_build.xml");
|
|
||||||
ele.appendChild(availableEle);
|
|
||||||
|
|
||||||
thenEle = document.createElement("then");
|
|
||||||
antEle = document.createElement("ant");
|
|
||||||
antEle.setAttribute("antfile", "${DEST_DIR_OUTPUT}/${BASE_NAME}_build.xml");
|
|
||||||
antEle.setAttribute("target", "cleanall");
|
|
||||||
thenEle.appendChild(antEle);
|
|
||||||
ele.appendChild(thenEle);
|
|
||||||
targetEle.appendChild(ele);
|
|
||||||
|
|
||||||
ele = document.createElement("delete");
|
|
||||||
ele.setAttribute("dir", "${DEST_DIR_OUTPUT}");
|
|
||||||
targetEle.appendChild(ele);
|
|
||||||
|
|
||||||
ele = document.createElement("delete");
|
|
||||||
ele.setAttribute("dir", "${DEST_DIR_DEBUG}");
|
|
||||||
targetEle.appendChild(ele);
|
|
||||||
|
|
||||||
ele = document.createElement("delete");
|
|
||||||
|
|
||||||
Element filesetEle = document.createElement("fileset");
|
|
||||||
filesetEle.setAttribute("dir", "${BIN_DIR}");
|
|
||||||
filesetEle.setAttribute("includes", "**${BASE_NAME}*");
|
|
||||||
ele.appendChild(filesetEle);
|
|
||||||
|
|
||||||
targetEle.appendChild(ele);
|
|
||||||
|
|
||||||
root.appendChild(targetEle);
|
|
||||||
|
|
||||||
|
|
||||||
document.appendChild(root);
|
|
||||||
|
|
||||||
//
|
|
||||||
// Prepare the DOM document for writing
|
|
||||||
//
|
|
||||||
Source source = new DOMSource(document);
|
|
||||||
|
|
||||||
//
|
|
||||||
// Prepare the output file
|
|
||||||
//
|
|
||||||
String filename = GlobalData.getMsaFile(moduleId).getParent() + File.separatorChar + "build.xml";
|
|
||||||
File file = new File(getProject().replaceProperties(filename));
|
|
||||||
|
|
||||||
GlobalData.log.info("File generating - " + filename);
|
|
||||||
//
|
|
||||||
// generate all directory path
|
|
||||||
//
|
|
||||||
Result result = new StreamResult(file);
|
|
||||||
|
|
||||||
//
|
|
||||||
// Write the DOM document to the file
|
|
||||||
//
|
|
||||||
Transformer xformer = TransformerFactory.newInstance()
|
|
||||||
.newTransformer();
|
|
||||||
xformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
|
|
||||||
xformer.setOutputProperty(OutputKeys.INDENT, "yes");
|
|
||||||
xformer.transform(source, result);
|
|
||||||
} catch (Exception ex) {
|
|
||||||
System.out.println("##" + ex);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addConfiguredModuleItem(ModuleItem moduleItem) {
|
|
||||||
PackageIdentification packageId = new PackageIdentification(moduleItem.getPackageName(), moduleItem.getPackageGuid(), moduleItem.getPackageVersion());
|
|
||||||
ModuleIdentification moduleId = new ModuleIdentification(moduleItem.getModuleName(), moduleItem.getModuleGuid(), moduleItem.getModuleVersion());
|
|
||||||
moduleId.setPackage(packageId);
|
|
||||||
modules.add(moduleId);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addConfiguredPackageItem(PackageItem packageItem) {
|
|
||||||
PackageIdentification packageId = new PackageIdentification(packageItem.getPackageName(), packageItem.getPackageGuid(), packageItem.getPackageVersion());
|
|
||||||
packages.add(packageId);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setMode(String mode) {
|
|
||||||
this.mode = mode;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -13,20 +13,24 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
package org.tianocore.build.tools;
|
package org.tianocore.build.tools;
|
||||||
|
|
||||||
import org.apache.tools.ant.BuildException;
|
import org.apache.tools.ant.BuildException;
|
||||||
|
/**
|
||||||
|
Ant element for module.
|
||||||
|
|
||||||
|
@since GenBuild 1.0
|
||||||
|
**/
|
||||||
public class ModuleItem {
|
public class ModuleItem {
|
||||||
|
|
||||||
private String moduleName;
|
private String moduleName = null;
|
||||||
|
|
||||||
private String moduleGuid;
|
private String moduleGuid = null;
|
||||||
|
|
||||||
private String moduleVersion;
|
private String moduleVersion = null;
|
||||||
|
|
||||||
private String packageName;
|
private String packageName = null;
|
||||||
|
|
||||||
private String packageGuid;
|
private String packageGuid = null;
|
||||||
|
|
||||||
private String packageVersion;
|
private String packageVersion = null;
|
||||||
|
|
||||||
public ModuleItem(){
|
public ModuleItem(){
|
||||||
|
|
||||||
|
@ -36,50 +40,98 @@ public class ModuleItem {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Get module Guid.
|
||||||
|
@return Module Guid
|
||||||
|
**/
|
||||||
public String getModuleGuid() {
|
public String getModuleGuid() {
|
||||||
return moduleGuid;
|
return moduleGuid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Set module Guid
|
||||||
|
@param moduleGuid Module Guid
|
||||||
|
**/
|
||||||
public void setModuleGuid(String moduleGuid) {
|
public void setModuleGuid(String moduleGuid) {
|
||||||
this.moduleGuid = moduleGuid;
|
this.moduleGuid = moduleGuid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Get Module Name.
|
||||||
|
@return Module Name
|
||||||
|
**/
|
||||||
public String getModuleName() {
|
public String getModuleName() {
|
||||||
return moduleName;
|
return moduleName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Set Module Name.
|
||||||
|
@param moduleName Module Name
|
||||||
|
**/
|
||||||
public void setModuleName(String moduleName) {
|
public void setModuleName(String moduleName) {
|
||||||
this.moduleName = moduleName;
|
this.moduleName = moduleName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Get Module Version.
|
||||||
|
@return Module Version
|
||||||
|
**/
|
||||||
public String getModuleVersion() {
|
public String getModuleVersion() {
|
||||||
return moduleVersion;
|
return moduleVersion;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Set Module Version.
|
||||||
|
@param moduleVersion Module version
|
||||||
|
**/
|
||||||
public void setModuleVersion(String moduleVersion) {
|
public void setModuleVersion(String moduleVersion) {
|
||||||
this.moduleVersion = moduleVersion;
|
this.moduleVersion = moduleVersion;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Get Package Guid.
|
||||||
|
@return Package Guid
|
||||||
|
**/
|
||||||
public String getPackageGuid() {
|
public String getPackageGuid() {
|
||||||
return packageGuid;
|
return packageGuid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Set Package Guid.
|
||||||
|
@param packageGuid Package Guid
|
||||||
|
**/
|
||||||
public void setPackageGuid(String packageGuid) {
|
public void setPackageGuid(String packageGuid) {
|
||||||
this.packageGuid = packageGuid;
|
this.packageGuid = packageGuid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Get Package Name.
|
||||||
|
@return Package Name
|
||||||
|
**/
|
||||||
public String getPackageName() {
|
public String getPackageName() {
|
||||||
return packageName;
|
return packageName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Set Package Name.
|
||||||
|
@param packageName Package Name
|
||||||
|
**/
|
||||||
public void setPackageName(String packageName) {
|
public void setPackageName(String packageName) {
|
||||||
this.packageName = packageName;
|
this.packageName = packageName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Get Package Version.
|
||||||
|
@return Package Version
|
||||||
|
**/
|
||||||
public String getPackageVersion() {
|
public String getPackageVersion() {
|
||||||
return packageVersion;
|
return packageVersion;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Set Package Version.
|
||||||
|
@param packageVersion Package Version
|
||||||
|
**/
|
||||||
public void setPackageVersion(String packageVersion) {
|
public void setPackageVersion(String packageVersion) {
|
||||||
this.packageVersion = packageVersion;
|
this.packageVersion = packageVersion;
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,13 +14,18 @@ package org.tianocore.build.tools;
|
||||||
|
|
||||||
import org.apache.tools.ant.BuildException;
|
import org.apache.tools.ant.BuildException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Ant element for Package.
|
||||||
|
|
||||||
|
@since GenBuild 1.0
|
||||||
|
**/
|
||||||
public class PackageItem {
|
public class PackageItem {
|
||||||
|
|
||||||
private String packageName;
|
private String packageName = null;
|
||||||
|
|
||||||
private String packageGuid;
|
private String packageGuid = null;
|
||||||
|
|
||||||
private String packageVersion;
|
private String packageVersion = null;
|
||||||
|
|
||||||
public PackageItem(){
|
public PackageItem(){
|
||||||
|
|
||||||
|
@ -33,26 +38,50 @@ public class PackageItem {
|
||||||
public String toString(){
|
public String toString(){
|
||||||
return "[" + packageName + packageGuid + "]";
|
return "[" + packageName + packageGuid + "]";
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
Get Package Guid.
|
||||||
|
@return Package Guid
|
||||||
|
**/
|
||||||
public String getPackageGuid() {
|
public String getPackageGuid() {
|
||||||
return packageGuid;
|
return packageGuid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Set Package Guid.
|
||||||
|
@param packageGuid Package Guid
|
||||||
|
**/
|
||||||
public void setPackageGuid(String packageGuid) {
|
public void setPackageGuid(String packageGuid) {
|
||||||
this.packageGuid = packageGuid;
|
this.packageGuid = packageGuid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Get Package Name.
|
||||||
|
@return Package Name
|
||||||
|
**/
|
||||||
public String getPackageName() {
|
public String getPackageName() {
|
||||||
return packageName;
|
return packageName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Set Package Name.
|
||||||
|
@param packageName Package Name
|
||||||
|
**/
|
||||||
public void setPackageName(String packageName) {
|
public void setPackageName(String packageName) {
|
||||||
this.packageName = packageName;
|
this.packageName = packageName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Get Package Version.
|
||||||
|
@return Package Version
|
||||||
|
**/
|
||||||
public String getPackageVersion() {
|
public String getPackageVersion() {
|
||||||
return packageVersion;
|
return packageVersion;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Set Package Version.
|
||||||
|
@param packageVersion Package Version
|
||||||
|
**/
|
||||||
public void setPackageVersion(String packageVersion) {
|
public void setPackageVersion(String packageVersion) {
|
||||||
this.packageVersion = packageVersion;
|
this.packageVersion = packageVersion;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue