1package com.jogamp.gluegen.opengl.ant;
41import java.io.IOException;
43import org.apache.tools.ant.BuildException;
44import org.apache.tools.ant.DirectoryScanner;
45import org.apache.tools.ant.Project;
46import org.apache.tools.ant.Task;
47import org.apache.tools.ant.taskdefs.Execute;
48import org.apache.tools.ant.taskdefs.LogStreamHandler;
49import org.apache.tools.ant.types.CommandlineJava;
50import org.apache.tools.ant.types.FileSet;
51import org.apache.tools.ant.types.Path;
52import org.apache.tools.ant.types.PatternSet;
53import org.apache.tools.ant.util.JavaEnvUtils;
74 private static final String GL_GEN =
"com.jogamp.gluegen.opengl.BuildStaticGLInfo";
81 private final CommandlineJava glgenCommandline;
87 private String packageName;
92 private String outputDirectory;
97 private final FileSet headerSet =
new FileSet();
106 glgenCommandline =
new CommandlineJava();
109 glgenCommandline.setVm(JavaEnvUtils.getJreExecutable(
"java"));
110 glgenCommandline.setClassname(GL_GEN);
122 log( (
"Setting package name to: " + packageName), Project.MSG_VERBOSE);
123 this.packageName = packageName;
133 log( (
"Setting output directory to: " + directory),
134 Project.MSG_VERBOSE);
135 this.outputDirectory = directory;
146 return headerSet.createInclude();
157 return headerSet.createIncludesFile();
168 headerSet.setIncludes(headers);
179 return glgenCommandline.createClasspath(project).createPath();
191 throws BuildException
194 validateAttributes();
202 log(glgenCommandline.describeCommand(), Project.MSG_VERBOSE);
205 final int error =
execute(glgenCommandline.getCommandline());
207 throw new BuildException( (
"BuildStaticGLInfo returned: " + error), location);
216 private void validateAttributes()
217 throws BuildException
220 if(!isValid(packageName))
221 throw new BuildException(
"Invalid package name: " + packageName);
225 if(!isValid(outputDirectory))
226 throw new BuildException(
"Invalid output directory name: " + outputDirectory);
239 private boolean isValid(
final String
string)
247 if(
string.trim().length() < 1)
258 private void addAttributes()
261 glgenCommandline.createArgument().setValue(packageName);
264 glgenCommandline.createArgument().setValue(outputDirectory);
267 headerSet.setDir(getProject().getBaseDir());
268 final DirectoryScanner directoryScanner = headerSet.getDirectoryScanner(getProject());
269 final String[] directoryFiles = directoryScanner.getIncludedFiles();
270 for(
int i=0; i<directoryFiles.length; i++)
272 glgenCommandline.createArgument().setValue(directoryFiles[i]);
282 private int execute(
final String[] command)
283 throws BuildException
286 final Execute
execute =
new Execute(
new LogStreamHandler(
this, Project.MSG_INFO,
292 execute.setCommandline(command);
293 execute.setWorkingDirectory( project.getBaseDir() );
299 }
catch(
final IOException ioe)
301 throw new BuildException(ioe, location);
void setHeaders(final String headers)
PatternSet.NameEntry createHeader()
PatternSet.NameEntry createHeadersFile()
void setOutputDir(final String directory)
void setPackage(final String packageName)