Support calling customized compression tool in FrameworkTask.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1506 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
54aa8673cb
commit
a1ffb10f21
@ -36,14 +36,13 @@ public class CompressSection implements Section, FfsTypes{
|
|||||||
//
|
//
|
||||||
// The attribute of compressName.
|
// The attribute of compressName.
|
||||||
//
|
//
|
||||||
String compressName = "";
|
private String compressName = "";
|
||||||
//
|
//
|
||||||
// The list contained the SectFile element.
|
// The list contained the SectFile element.
|
||||||
//
|
//
|
||||||
List<Object> SectList = new ArrayList<Object>();
|
private List<Section> sectList = new ArrayList<Section>();
|
||||||
|
|
||||||
public static Object semaphore = new Object();
|
public static Object semaphore = new Object();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
toBuffer
|
toBuffer
|
||||||
|
|
||||||
@ -69,7 +68,7 @@ public class CompressSection implements Section, FfsTypes{
|
|||||||
// Get each section which under the compress {};
|
// Get each section which under the compress {};
|
||||||
// And add it is contains to File;
|
// And add it is contains to File;
|
||||||
//
|
//
|
||||||
Iterator SectionIter = SectList.iterator();
|
Iterator SectionIter = sectList.iterator();
|
||||||
while (SectionIter.hasNext()){
|
while (SectionIter.hasNext()){
|
||||||
sect = (Section)SectionIter.next();
|
sect = (Section)SectionIter.next();
|
||||||
|
|
||||||
@ -87,7 +86,6 @@ public class CompressSection implements Section, FfsTypes{
|
|||||||
}
|
}
|
||||||
Do.close();
|
Do.close();
|
||||||
|
|
||||||
|
|
||||||
synchronized (semaphore) {
|
synchronized (semaphore) {
|
||||||
//
|
//
|
||||||
// Call compress
|
// Call compress
|
||||||
@ -186,7 +184,7 @@ public class CompressSection implements Section, FfsTypes{
|
|||||||
@param sectFile SectFile element which succeed from section class.
|
@param sectFile SectFile element which succeed from section class.
|
||||||
**/
|
**/
|
||||||
public void addSectFile (SectFile sectFile) {
|
public void addSectFile (SectFile sectFile) {
|
||||||
SectList.add(sectFile);
|
sectList.add(sectFile);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -197,6 +195,6 @@ public class CompressSection implements Section, FfsTypes{
|
|||||||
@param tool Tool element which succeed from section class.
|
@param tool Tool element which succeed from section class.
|
||||||
**/
|
**/
|
||||||
public void addTool (Tool tool) {
|
public void addTool (Tool tool) {
|
||||||
SectList.add(tool);
|
sectList.add(tool);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -113,7 +113,12 @@ public class GenFfsFileTask extends Task implements EfiDefine, FfsTypes {
|
|||||||
/// The path of Framewor_Tools_Paht.
|
/// The path of Framewor_Tools_Paht.
|
||||||
///
|
///
|
||||||
static String path = "";
|
static String path = "";
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Gensection
|
||||||
|
///
|
||||||
|
List<GenSectionTask> genSectList = new ArrayList<GenSectionTask>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
execute
|
execute
|
||||||
|
|
||||||
@ -931,4 +936,15 @@ public class GenFfsFileTask extends Task implements EfiDefine, FfsTypes {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
addGenSection
|
||||||
|
|
||||||
|
This function is to add gensection instance to list
|
||||||
|
|
||||||
|
@param task Instance of GenSectionTask
|
||||||
|
**/
|
||||||
|
public void addGenSection (GenSectionTask task){
|
||||||
|
this.sectionList.add(task);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,12 @@
|
|||||||
|
|
||||||
package org.tianocore.framework.tasks;
|
package org.tianocore.framework.tasks;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.DataOutputStream;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.tools.ant.BuildException;
|
import org.apache.tools.ant.BuildException;
|
||||||
import org.apache.tools.ant.Project;
|
import org.apache.tools.ant.Project;
|
||||||
@ -24,8 +29,9 @@ import org.apache.tools.ant.Task;
|
|||||||
import org.apache.tools.ant.taskdefs.Execute;
|
import org.apache.tools.ant.taskdefs.Execute;
|
||||||
import org.apache.tools.ant.taskdefs.LogStreamHandler;
|
import org.apache.tools.ant.taskdefs.LogStreamHandler;
|
||||||
import org.apache.tools.ant.types.Commandline;
|
import org.apache.tools.ant.types.Commandline;
|
||||||
|
import org.tianocore.common.logger.EdkLog;
|
||||||
|
|
||||||
public class GenSectionTask extends Task implements EfiDefine {
|
public class GenSectionTask extends Task implements EfiDefine, Section,FfsTypes {
|
||||||
///
|
///
|
||||||
/// inputfile name
|
/// inputfile name
|
||||||
///
|
///
|
||||||
@ -50,7 +56,11 @@ public class GenSectionTask extends Task implements EfiDefine {
|
|||||||
/// interface string
|
/// interface string
|
||||||
///
|
///
|
||||||
private String interfaceString = "";
|
private String interfaceString = "";
|
||||||
|
///
|
||||||
|
/// Section file list
|
||||||
|
///
|
||||||
|
private List<Section> sectFileList = new ArrayList<Section>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
execute
|
execute
|
||||||
|
|
||||||
@ -74,7 +84,7 @@ public class GenSectionTask extends Task implements EfiDefine {
|
|||||||
//
|
//
|
||||||
// argument of tools
|
// argument of tools
|
||||||
//
|
//
|
||||||
String argument = inputFile + outputFile + sectionType + versionNum
|
String argument = inputFile + outputFile + " -s "+ sectionType + versionNum
|
||||||
+ interfaceString;
|
+ interfaceString;
|
||||||
//
|
//
|
||||||
// return value of gensection execution
|
// return value of gensection execution
|
||||||
@ -93,8 +103,8 @@ public class GenSectionTask extends Task implements EfiDefine {
|
|||||||
runner.setAntRun(project);
|
runner.setAntRun(project);
|
||||||
runner.setCommandline(cmdline.getCommandline());
|
runner.setCommandline(cmdline.getCommandline());
|
||||||
|
|
||||||
log(inputFileName);
|
EdkLog.log(this, EdkLog.EDK_INFO, inputFileName);
|
||||||
log(Commandline.toString(cmdline.getCommandline()), Project.MSG_VERBOSE);
|
EdkLog.log(this, EdkLog.EDK_DEBUG, Commandline.toString(cmdline.getCommandline()));
|
||||||
revl = runner.execute();
|
revl = runner.execute();
|
||||||
if (EFI_SUCCESS == revl) {
|
if (EFI_SUCCESS == revl) {
|
||||||
log("GenSection succeeded!", Project.MSG_VERBOSE);
|
log("GenSection succeeded!", Project.MSG_VERBOSE);
|
||||||
@ -173,7 +183,7 @@ public class GenSectionTask extends Task implements EfiDefine {
|
|||||||
@param sectionType section type
|
@param sectionType section type
|
||||||
**/
|
**/
|
||||||
public void setSectionType(String sectionType) {
|
public void setSectionType(String sectionType) {
|
||||||
this.sectionType = " -s " + sectionType;
|
this.sectionType = sectionType;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -215,4 +225,148 @@ public class GenSectionTask extends Task implements EfiDefine {
|
|||||||
public void setInterfaceString(String interfaceString) {
|
public void setInterfaceString(String interfaceString) {
|
||||||
this.interfaceString = " -a " + "\"" + interfaceString + "\"";
|
this.interfaceString = " -a " + "\"" + interfaceString + "\"";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
addSectFile
|
||||||
|
|
||||||
|
This function is to add sectFile to list.
|
||||||
|
|
||||||
|
@param sectFile instance of sectFile.
|
||||||
|
**/
|
||||||
|
public void addSectFile(SectFile sectFile){
|
||||||
|
this.sectFileList.add(sectFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
setTool
|
||||||
|
|
||||||
|
This function is to set the class member "Tool";
|
||||||
|
|
||||||
|
@param tool
|
||||||
|
**/
|
||||||
|
public void addTool(Tool tool) {
|
||||||
|
this.sectFileList.add(tool);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
addGenSection
|
||||||
|
|
||||||
|
This function is to add GenSectin element to list
|
||||||
|
@param task Instance of genSection
|
||||||
|
**/
|
||||||
|
public void addGenSection(GenSectionTask task){
|
||||||
|
this.sectFileList.add(task);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void toBuffer(DataOutputStream buffer){
|
||||||
|
//
|
||||||
|
// Search SectionList find earch section and call it's
|
||||||
|
// ToBuffer function.
|
||||||
|
//
|
||||||
|
if (this.sectionType.equalsIgnoreCase("EFI_SECTION_COMPRESSION")){
|
||||||
|
Section sect;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Get section file in compress node.
|
||||||
|
//
|
||||||
|
try{
|
||||||
|
ByteArrayOutputStream bo = new ByteArrayOutputStream ();
|
||||||
|
DataOutputStream Do = new DataOutputStream (bo);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Get each section which under the compress {};
|
||||||
|
// And add it is contains to File;
|
||||||
|
//
|
||||||
|
Iterator SectionIter = this.sectFileList.iterator();
|
||||||
|
while (SectionIter.hasNext()){
|
||||||
|
sect = (Section)SectionIter.next();
|
||||||
|
|
||||||
|
//
|
||||||
|
// Call each section class's toBuffer function.
|
||||||
|
//
|
||||||
|
try {
|
||||||
|
sect.toBuffer(Do);
|
||||||
|
}
|
||||||
|
catch (BuildException e) {
|
||||||
|
System.out.print(e.getMessage());
|
||||||
|
throw new BuildException ("Compress.toBuffer failed at section");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
Do.close();
|
||||||
|
|
||||||
|
//
|
||||||
|
// Call compress
|
||||||
|
//
|
||||||
|
byte[] fileBuffer = bo.toByteArray();
|
||||||
|
Compress myCompress = new Compress(fileBuffer, fileBuffer.length);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Add Compress header
|
||||||
|
//
|
||||||
|
CompressHeader Ch = new CompressHeader();
|
||||||
|
Ch.SectionHeader.Size[0] = (byte)((myCompress.outputBuffer.length +
|
||||||
|
Ch.GetSize()) &
|
||||||
|
0xff
|
||||||
|
);
|
||||||
|
Ch.SectionHeader.Size[1] = (byte)(((myCompress.outputBuffer.length +
|
||||||
|
Ch.GetSize())&
|
||||||
|
0xff00) >> 8
|
||||||
|
);
|
||||||
|
Ch.SectionHeader.Size[2] = (byte)(((myCompress.outputBuffer.length +
|
||||||
|
Ch.GetSize()) &
|
||||||
|
0xff0000) >> 16
|
||||||
|
);
|
||||||
|
Ch.SectionHeader.type = (byte) EFI_SECTION_COMPRESSION;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Note: The compressName was not efsfective now. Using the
|
||||||
|
// EFI_STANDARD_COMPRSSION for compressType .
|
||||||
|
// That is follow old Genffsfile tools. Some code will be added for
|
||||||
|
// the different compressName;
|
||||||
|
//
|
||||||
|
Ch.UncompressLen = fileBuffer.length;
|
||||||
|
Ch.CompressType = EFI_STANDARD_COMPRESSION;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Change header struct to byte buffer
|
||||||
|
//
|
||||||
|
byte [] headerBuffer = new byte[Ch.GetSize()];
|
||||||
|
Ch.StructToBuffer(headerBuffer);
|
||||||
|
|
||||||
|
//
|
||||||
|
// First add CompressHeader to Buffer, then add Compress data.
|
||||||
|
//
|
||||||
|
buffer.write (headerBuffer);
|
||||||
|
buffer.write(myCompress.outputBuffer);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Buffer 4 Byte aligment
|
||||||
|
//
|
||||||
|
int size = Ch.GetSize() + myCompress.outputBuffer.length;
|
||||||
|
|
||||||
|
while ((size & 0x03) != 0){
|
||||||
|
size ++;
|
||||||
|
buffer.writeByte(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e){
|
||||||
|
throw new BuildException("compress.toBuffer failed!\n");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Section sect;
|
||||||
|
Iterator sectionIter = this.sectFileList.iterator();
|
||||||
|
while (sectionIter.hasNext()) {
|
||||||
|
sect = (Section)sectionIter.next();
|
||||||
|
try {
|
||||||
|
//
|
||||||
|
// The last section don't need 4 byte ffsAligment.
|
||||||
|
//
|
||||||
|
sect.toBuffer(buffer);
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new BuildException (e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,15 +13,19 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|||||||
**/
|
**/
|
||||||
package org.tianocore.framework.tasks;
|
package org.tianocore.framework.tasks;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.DataInputStream;
|
import java.io.DataInputStream;
|
||||||
import java.io.DataOutputStream;
|
import java.io.DataOutputStream;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.tools.ant.BuildException;
|
import org.apache.tools.ant.BuildException;
|
||||||
|
import org.tianocore.common.logger.EdkLog;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Class Tool is to define an external tool to be used for genffsfile
|
Class Tool is to define an external tool to be used for genffsfile
|
||||||
@ -33,7 +37,8 @@ public class Tool implements EfiDefine, Section {
|
|||||||
String outputPath;
|
String outputPath;
|
||||||
File outputFile ;
|
File outputFile ;
|
||||||
List<Input> inputFiles = new ArrayList<Input>();
|
List<Input> inputFiles = new ArrayList<Input>();
|
||||||
|
List<Section> gensectList = new ArrayList<Section>();
|
||||||
|
String inputArg = "-i ";
|
||||||
/**
|
/**
|
||||||
Call extern tool
|
Call extern tool
|
||||||
|
|
||||||
@ -107,7 +112,41 @@ public class Tool implements EfiDefine, Section {
|
|||||||
Iterator inputIter = inputFiles.iterator();
|
Iterator inputIter = inputFiles.iterator();
|
||||||
ToolArg toolArg;
|
ToolArg toolArg;
|
||||||
Input file = null;
|
Input file = null;
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Get each section which under the compress {};
|
||||||
|
// And add it is contains to File;
|
||||||
|
//
|
||||||
|
Section sect;
|
||||||
|
try{
|
||||||
|
Iterator SectionIter = this.gensectList.iterator();
|
||||||
|
while (SectionIter.hasNext()){
|
||||||
|
sect = (Section)SectionIter.next();
|
||||||
|
//
|
||||||
|
// Parse <genSection> element
|
||||||
|
//
|
||||||
|
File outputFile = File.createTempFile("temp", "sec1",new File(outputPath));
|
||||||
|
FileOutputStream bo = new FileOutputStream(outputFile);
|
||||||
|
DataOutputStream Do = new DataOutputStream (bo);
|
||||||
|
//
|
||||||
|
// Call each section class's toBuffer function.
|
||||||
|
//
|
||||||
|
try {
|
||||||
|
sect.toBuffer(Do);
|
||||||
|
}
|
||||||
|
catch (BuildException e) {
|
||||||
|
System.out.print(e.getMessage());
|
||||||
|
throw new BuildException ("GenSection failed at Tool!");
|
||||||
|
}
|
||||||
|
Do.close();
|
||||||
|
this.inputArg += outputFile.getPath() + " ";
|
||||||
|
}
|
||||||
|
} catch (IOException e){
|
||||||
|
throw new BuildException ("Gensection failed at tool!");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
///
|
///
|
||||||
/// argument of tools
|
/// argument of tools
|
||||||
///
|
///
|
||||||
@ -120,21 +159,19 @@ public class Tool implements EfiDefine, Section {
|
|||||||
///
|
///
|
||||||
/// input files for tools
|
/// input files for tools
|
||||||
///
|
///
|
||||||
argument += " -i ";
|
|
||||||
while (inputIter.hasNext()) {
|
while (inputIter.hasNext()) {
|
||||||
file = (Input)inputIter.next();
|
file = (Input)inputIter.next();
|
||||||
argument += file.toString(" ");
|
inputArg += file.toString(" ");
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
outputFile = File.createTempFile("temp", ".crc", new File(outputPath));
|
outputFile = File.createTempFile("temp", null, new File(outputPath));
|
||||||
argument = argument + " -o " + outputFile.getPath();
|
argument = argument + inputArg + " -o " + outputFile.getPath();
|
||||||
|
EdkLog.log(EdkLog.EDK_INFO, argument);
|
||||||
///
|
///
|
||||||
/// execute command line
|
/// execute command line
|
||||||
///
|
///
|
||||||
Process crcProcess = Runtime.getRuntime().exec(command + " " + argument);
|
Process process = Runtime.getRuntime().exec(command + " " + argument);
|
||||||
crcProcess.waitFor();
|
process.waitFor();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
System.out.print (e.getMessage());
|
System.out.print (e.getMessage());
|
||||||
throw new BuildException("Execution of externalTool task failed!\n");
|
throw new BuildException("Execution of externalTool task failed!\n");
|
||||||
@ -194,6 +231,22 @@ public class Tool implements EfiDefine, Section {
|
|||||||
public void addInput(Input file) {
|
public void addInput(Input file) {
|
||||||
inputFiles.add(file);
|
inputFiles.add(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// addTool
|
||||||
|
//
|
||||||
|
// This function is to add instance of Tool to list.
|
||||||
|
//
|
||||||
|
// @param tool instance of Tool.
|
||||||
|
// **/
|
||||||
|
// public void addTool(Tool tool){
|
||||||
|
// this.toolList.add(tool);
|
||||||
|
// }
|
||||||
|
|
||||||
|
public void addGenSection(GenSectionTask genSect){
|
||||||
|
this.gensectList.add(genSect);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -238,7 +238,9 @@ public class FfsProcess {
|
|||||||
**/
|
**/
|
||||||
private void dealSections(int mode, Document doc, Element root, XmlCursor cursor, Vector<String> list) {
|
private void dealSections(int mode, Document doc, Element root, XmlCursor cursor, Vector<String> list) {
|
||||||
String type = cursor.getAttributeText(new QName("EncapsulationType"));
|
String type = cursor.getAttributeText(new QName("EncapsulationType"));
|
||||||
if (type == null) {
|
String toolName = cursor.getAttributeText(new QName("ToolName"));
|
||||||
|
String sectType = cursor.getAttributeText(new QName("SectionType"));
|
||||||
|
if (type == null && sectType == null) {
|
||||||
if (cursor.toFirstChild()) {
|
if (cursor.toFirstChild()) {
|
||||||
do {
|
do {
|
||||||
if (cursor.getName().getLocalPart().equalsIgnoreCase("Section")) {
|
if (cursor.getName().getLocalPart().equalsIgnoreCase("Section")) {
|
||||||
@ -255,33 +257,69 @@ public class FfsProcess {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Element ele;
|
Element ele;
|
||||||
if (type.equalsIgnoreCase("COMPRESS")) {
|
Element toolEle = null;
|
||||||
|
if (type.equalsIgnoreCase("COMPRESS") && (toolName == null || toolName.equalsIgnoreCase(""))) {
|
||||||
mode = MODE_COMPRESS;
|
mode = MODE_COMPRESS;
|
||||||
//
|
//
|
||||||
// <compress compressName = "dummy">
|
// <gensection sectiontype="EFI_SECTION_COMPRESSION">
|
||||||
//
|
//
|
||||||
ele = doc.createElement("compress");
|
ele = doc.createElement("gensection");
|
||||||
ele.setAttribute("compressName", "dummy");
|
ele.setAttribute("sectionType", "EFI_SECTION_COMPRESSION");
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
mode = MODE_GUID_DEFINED;
|
mode = MODE_GUID_DEFINED;
|
||||||
//
|
//
|
||||||
|
// <gensection sectiontype="EFI_SECTION_GUID_DEFINED">
|
||||||
|
//
|
||||||
|
ele = doc.createElement("gensection");
|
||||||
|
if (type != null) {
|
||||||
|
ele.setAttribute("sectiontype", "EFI_SECTION_GUID_DEFINED");
|
||||||
|
} else {
|
||||||
|
ele.setAttribute("sectiontype", sectType);
|
||||||
|
}
|
||||||
|
//
|
||||||
// <tool toolName="${OEMTOOLPATH}\toolname"
|
// <tool toolName="${OEMTOOLPATH}\toolname"
|
||||||
// outputPath = "${DEST_DIR_OUTPUT}">
|
// outputPath = "${DEST_DIR_OUTPUT}">
|
||||||
//
|
//
|
||||||
ele = doc.createElement("tool");
|
toolEle = doc.createElement("tool");
|
||||||
ele.setAttribute("toolName", "${WORKSPACE_DIR}" + File.separatorChar + "Tools" + File.separatorChar + "bin"
|
if (toolName == null || toolName.equalsIgnoreCase("")) {
|
||||||
|
toolEle.setAttribute("toolName", "${WORKSPACE_DIR}" + File.separatorChar + "Tools" + File.separatorChar + "bin"
|
||||||
+ File.separatorChar + "GenCRC32Section");
|
+ File.separatorChar + "GenCRC32Section");
|
||||||
ele.setAttribute("outputPath", "${DEST_DIR_OUTPUT}");
|
}else{
|
||||||
|
File toolExe = new File(toolName);
|
||||||
|
//
|
||||||
|
// If <Tool> element exist, add sub element under <tool> .
|
||||||
|
//
|
||||||
|
if (toolExe.isAbsolute()) {
|
||||||
|
toolEle.setAttribute("toolName", toolName);
|
||||||
|
} else {
|
||||||
|
toolEle.setAttribute("toolName", "${WORKSPACE_DIR}" + File.separatorChar + "Tools" + File.separatorChar + "bin"
|
||||||
|
+ File.separatorChar + toolName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
toolEle.setAttribute("outputPath", "${DEST_DIR_OUTPUT}");
|
||||||
|
ele.appendChild(toolEle);
|
||||||
}
|
}
|
||||||
if (cursor.toFirstChild()) {
|
if (cursor.toFirstChild()) {
|
||||||
do {
|
do {
|
||||||
if (cursor.getName().getLocalPart().equalsIgnoreCase("Section")) {
|
if (cursor.getName().getLocalPart().equalsIgnoreCase("Section")) {
|
||||||
cursor.push();
|
cursor.push();
|
||||||
dealSection(mode, doc, ele, cursor, list);
|
if (toolEle == null) {
|
||||||
|
dealSection(mode, doc, ele, cursor, list);
|
||||||
|
} else {
|
||||||
|
dealSection(mode, doc, toolEle, cursor, list);
|
||||||
|
}
|
||||||
|
|
||||||
cursor.pop();
|
cursor.pop();
|
||||||
} else if (cursor.getName().getLocalPart().equalsIgnoreCase("Sections")) {
|
} else if (cursor.getName().getLocalPart().equalsIgnoreCase("Sections")) {
|
||||||
cursor.push();
|
cursor.push();
|
||||||
dealSections(mode, doc, ele, cursor, list);
|
if (toolEle == null) {
|
||||||
|
dealSections(mode, doc, ele, cursor, list);
|
||||||
|
} else {
|
||||||
|
dealSections(mode, doc, toolEle, cursor, list);
|
||||||
|
}
|
||||||
|
|
||||||
cursor.pop();
|
cursor.pop();
|
||||||
}
|
}
|
||||||
} while (cursor.toNextSibling());
|
} while (cursor.toNextSibling());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user