import java.io.BufferedReader;\r
import java.io.File;\r
import java.io.FileReader;\r
+import java.util.Iterator;\r
+import java.util.LinkedHashSet;\r
+import java.util.Set;\r
import java.util.Vector;\r
\r
import org.apache.tools.ant.BuildException;\r
import org.apache.tools.ant.Project;\r
-import org.apache.tools.ant.types.FileList;\r
-import org.apache.tools.ant.types.FileSet;\r
-\r
-import sun.nio.cs.ext.TIS_620;\r
\r
import net.sf.antcontrib.cpptasks.ProcessorDef;\r
-import net.sf.antcontrib.cpptasks.types.AslcompilerArgument;\r
import net.sf.antcontrib.cpptasks.types.ConditionalPath;\r
import net.sf.antcontrib.cpptasks.types.IncludePath;\r
import net.sf.antcontrib.cpptasks.types.LibrarySet;\r
public UserDefineDef () {}\r
\r
private String type = "CC";\r
+ \r
+ private String family = "MSFT";\r
+ \r
+ private String cmd;\r
+ \r
private String includepathDelimiter;\r
\r
- private File outdir;\r
+ private String outputDelimiter;\r
+ \r
private File workdir;\r
-\r
- private String inputSuffix;\r
- private String outputSuffix;\r
\r
- private Vector<IncludePath> includePaths= new Vector<IncludePath>();\r
- private Vector<FileList> fileSetList = new Vector<FileList>();\r
+ private Vector includePaths= new Vector();\r
\r
- /**\r
- * New adding for support GCC toolchain.\r
- * Most of those only have one value for example :\r
- * entryPoint, mapFile, pdbFile, define those as element because \r
- * if attribut too much the command line is not good-lookinng.\r
- */\r
+ private String outputFile;\r
+ \r
+ private Vector _libset = new Vector();\r
\r
- private Vector<UserDefineElement> includeFiles = new Vector<UserDefineElement>();\r
- private Vector<UserDefineElement> outPutFiles = new Vector<UserDefineElement>();\r
- private Vector<UserDefineElement> subSystem = new Vector<UserDefineElement>();\r
- private Vector<UserDefineElement> entryPoint = new Vector<UserDefineElement>();\r
- private Vector<UserDefineElement> map = new Vector<UserDefineElement>();\r
- private Vector<UserDefineElement> pdb = new Vector<UserDefineElement>();\r
- private Vector<LibrarySet> libSet = new Vector<LibrarySet>();\r
+ public void addLibset(LibrarySet libset) {\r
+ if (isReference()) {\r
+ throw noChildrenAllowed();\r
+ }\r
+ if (libset == null) {\r
+ throw new NullPointerException("libset");\r
+ }\r
+ \r
+ _libset.add(libset);\r
+ }\r
\r
public void execute() throws org.apache.tools.ant.BuildException {\r
throw new org.apache.tools.ant.BuildException(\r
this.includepathDelimiter = includepathDelimiter;\r
}\r
\r
- public String getInputSuffix() {\r
+ public String getType() {\r
if (isReference()) {\r
return ((UserDefineDef) getCheckedRef(UserDefineDef.class,\r
- "UserDefineDef")).getInputSuffix();\r
+ "UserDefineDef")).getType();\r
}\r
- return inputSuffix;\r
+ return type;\r
}\r
\r
- public void setInputSuffix(String inputSuffix) {\r
+ public void setType(String type) {\r
if (isReference()) {\r
throw tooManyAttributes();\r
}\r
- this.inputSuffix = inputSuffix;\r
+ this.type = type;\r
}\r
\r
- public File getOutdir() {\r
- if (isReference()) {\r
- return ((UserDefineDef) getCheckedRef(UserDefineDef.class,\r
- "UserDefineDef")).getOutdir();\r
- }\r
- return outdir;\r
+ public String getCmd() {\r
+ return cmd;\r
}\r
\r
- public void setOutdir(File outdir) {\r
+ public void setCmd(String cmd) {\r
if (isReference()) {\r
throw tooManyAttributes();\r
}\r
- this.outdir = outdir;\r
+ this.cmd = cmd;\r
}\r
\r
- public String getOutputSuffix() {\r
- if (isReference()) {\r
- return ((UserDefineDef) getCheckedRef(UserDefineDef.class,\r
- "UserDefineDef")).getOutputSuffix();\r
- }\r
- return outputSuffix;\r
+ public String getFamily() {\r
+ return family;\r
}\r
\r
- public void setOutputSuffix(String outputSuffix) {\r
+ public void setFamily(String family) {\r
if (isReference()) {\r
throw tooManyAttributes();\r
}\r
- this.outputSuffix = outputSuffix;\r
+ this.family = family;\r
}\r
\r
- public String getType() {\r
- if (isReference()) {\r
- return ((UserDefineDef) getCheckedRef(UserDefineDef.class,\r
- "UserDefineDef")).getType();\r
- }\r
- return type;\r
+ public String getOutputFile() {\r
+ return outputFile;\r
}\r
\r
- public void setType(String type) {\r
+ public void setOutputFile(String outputFile) {\r
if (isReference()) {\r
throw tooManyAttributes();\r
}\r
- this.type = type;\r
+ this.outputFile = outputFile;\r
}\r
\r
public File getWorkdir() {\r
- if (isReference()) {\r
- return ((UserDefineDef) getCheckedRef(UserDefineDef.class,\r
- "UserDefineDef")).getWorkdir();\r
- }\r
return workdir;\r
}\r
\r
}\r
this.workdir = workdir;\r
}\r
- \r
- /**\r
- * Add an libSet.\r
- */\r
- public LibrarySet createLibset() {\r
- if (isReference()){\r
- throw noChildrenAllowed();\r
- }\r
- LibrarySet lib = new LibrarySet();\r
- libSet.addElement(lib);\r
- return lib; \r
- }\r
- \r
- public String getLibSetString(){\r
- String libString = null;\r
- for (int i = 0; i < libSet.size(); i++){\r
- String[] libList = libSet.get(i).getLibs();\r
- for (int j = 0; j < libList.length; j++){\r
- libString = libString + libList[j] + " ";\r
+\r
+ public String[] get_libset() {\r
+ Set libs = new LinkedHashSet();\r
+ Iterator iter = _libset.iterator();\r
+ while (iter.hasNext()) {\r
+ LibrarySet librarySet = (LibrarySet)iter.next();\r
+ File basedir = librarySet.getDir(getProject());\r
+ String[] libStrArray = librarySet.getLibs();\r
+ for (int i = 0 ; i < libStrArray.length; i ++) {\r
+ if (basedir != null) {\r
+ File libFile = new File(libStrArray[i]);\r
+ if (libFile.isAbsolute()) {\r
+ libs.add(libFile.getPath());\r
+ }\r
+ else {\r
+ libs.add(basedir.getPath() + File.separatorChar + libFile.getPath());\r
+ }\r
+ }\r
+ else {\r
+ libs.add(libStrArray[i]);\r
+ }\r
}\r
}\r
- return libString;\r
+ return (String[])libs.toArray(new String[libs.size()]);\r
}\r
- \r
- public Vector<LibrarySet> getLibSet(){\r
- return this.libSet; \r
- }\r
- \r
- /**\r
- * Add map element\r
- */\r
- public void addMap(UserDefineElement mapElement){\r
- if (isReference()){\r
- throw noChildrenAllowed();\r
- }else{\r
- this.map.addElement(mapElement);\r
- }\r
- }\r
- \r
- public Vector<UserDefineElement> getMap (){\r
- return this.map;\r
- } \r
- \r
- public String getMapvalue (){\r
- if (this.map.size() > 0){\r
- /*\r
- * If user set more than one map use the first one. \r
- */\r
- return this.map.get(0).value;\r
- }\r
- return null;\r
- \r
- }\r
- public String getMapFlag(){\r
- if (this.map.size() > 0){\r
- /*\r
- * If user set more than one map use the first one. \r
- */\r
- return this.map.get(0).flag;\r
- }\r
- return null;\r
- }\r
- /**\r
- * Add pdb element\r
- */\r
- public void addPdb(UserDefineElement pdbElement){\r
- if (isReference()){\r
- throw noChildrenAllowed();\r
- }\r
- this.pdb.addElement(pdbElement);\r
- }\r
- \r
- public Vector<UserDefineElement> getPdb(){\r
- return this.pdb;\r
- }\r
- public String getPdbvalue (){\r
- if (this.pdb.size() > 0){\r
- /*\r
- * If user set more than one pdb use the first one. \r
- * \r
- */\r
- return this.pdb.get(0).value;\r
- }\r
- return null;\r
- \r
- }\r
- public String getPdbFlag(){\r
- if (this.pdb.size() > 0){\r
- /*\r
- * If user set more than one pdb use the first one. \r
- */\r
- return this.pdb.get(0).flag;\r
- }\r
- return null;\r
- }\r
- \r
- /**\r
- * add entryPoint element.\r
- */\r
- public void addEntryPoint(UserDefineElement entryPointElement){\r
- if (isReference()){\r
- throw noChildrenAllowed();\r
- }\r
- this.entryPoint.addElement(entryPointElement);\r
- }\r
- \r
- public Vector<UserDefineElement> getEntryPoint(){\r
- return this.entryPoint;\r
- }\r
- \r
- public String getEntryPointvalue (){\r
- if (this.entryPoint.size() > 0){\r
- /*\r
- * If user set more than one entryPoint use the first one. \r
- */\r
- return this.entryPoint.get(0).value;\r
- }\r
- return null;\r
- \r
- }\r
- public String getEntryPointFlag(){\r
- if (this.entryPoint.size() > 0){\r
- /*\r
- * If user set more than one entry point use the first one. \r
- */\r
- return this.entryPoint.get(0).flag;\r
- }\r
- return null;\r
- }\r
- \r
- /**\r
- * Add subSystem element.\r
- */\r
- public void addSubSystem (UserDefineElement subSystem){\r
- if (isReference()){\r
- throw noChildrenAllowed();\r
- }\r
- this.subSystem.addElement(subSystem);\r
- }\r
- public Vector<UserDefineElement> getSubSystem (){\r
- return this.subSystem;\r
- }\r
- \r
- public String getSubSystemvalue (){\r
- if (this.subSystem.size() > 0){\r
- /*\r
- * If user set more than one subsystem use the first one. \r
- */\r
- return this.subSystem.get(0).value;\r
- }\r
- return null;\r
- \r
- }\r
- public String getSubSystemFlag(){\r
- if (this.subSystem.size() > 0){\r
- /*\r
- * If user set more than one subsystem use the first one. \r
- */\r
- return this.subSystem.get(0).flag;\r
- }\r
- return null;\r
- }\r
- /**\r
- * Add includeFile element\r
- */\r
- public void addIncludeFile (UserDefineElement includeFile){\r
- if (isReference()){\r
- throw noChildrenAllowed();\r
- }\r
- this.includeFiles.addElement(includeFile);\r
- }\r
- public Vector<UserDefineElement> getIncludeFiles(){\r
- return this.includeFiles;\r
- }\r
- \r
- public String getIncludeFile (){\r
- if (this.includeFiles.size() > 0){\r
- /*\r
- * If user set more than one map use the first one. \r
- */\r
- return this.includeFiles.get(0).value;\r
- }\r
- return null;\r
- \r
- }\r
- public String getIncludeFileFlag(){\r
- if (this.includeFiles.size() > 0){\r
- /*\r
- * If user set more than one map use the first one. \r
- */\r
- return this.includeFiles.get(0).flag;\r
- }\r
- return null;\r
- }\r
- \r
- /**\r
- * Add OutputFile element\r
- */\r
- public void addOutputFile (UserDefineElement outPutFile){\r
- if (isReference()){\r
- throw noChildrenAllowed();\r
- }\r
- this.outPutFiles.addElement(outPutFile);\r
- }\r
- \r
- public Vector<UserDefineElement> getOutputFiles(){\r
- return this.outPutFiles;\r
- }\r
- \r
- public String getOutputFile (){\r
- if (this.outPutFiles.size() > 0){\r
- /*\r
- * If user set more than one map use the first one. \r
- */\r
- return this.outPutFiles.get(0).value;\r
- }\r
- return null;\r
- \r
- }\r
- public String getOutPutFlag(){\r
- if (this.outPutFiles.size() > 0){\r
- /*\r
- * If user set more than one map use the first one. \r
- */\r
- return this.outPutFiles.get(0).flag;\r
- }\r
- return null;\r
- }\r
- \r
- /**\r
- * Add fileSet list\r
- */\r
- public void addFileList(FileList fileSet){\r
- this.fileSetList.addElement(fileSet);\r
+\r
+ public String getOutputDelimiter() {\r
+ return outputDelimiter;\r
}\r
- \r
- public Vector<String> getFileList(){\r
- Project p = getProject();\r
- Vector<String> fileListVector = new Vector<String>();\r
- for (int i = 0; i < this.fileSetList.size(); i++){\r
- String[] tempStrList = this.fileSetList.get(i).getFiles(p);\r
- for (int j = 0; j < tempStrList.length; j++){\r
- fileListVector .addElement(tempStrList[j]);\r
- }\r
- }\r
- return fileListVector;\r
+\r
+ public void setOutputDelimiter(String outputDelimiter) {\r
+ this.outputDelimiter = outputDelimiter;\r
}\r
+\r
}\r