29package com.jogamp.gluegen;
31import com.jogamp.gluegen.JavaEmitter;
32import com.jogamp.gluegen.GlueGen;
34import java.net.URISyntaxException;
35import org.apache.tools.ant.DefaultLogger;
36import org.apache.tools.ant.Project;
37import org.apache.tools.ant.ProjectHelper;
39import static java.lang.System.*;
46 private static final Project project;
49 public static final String
path;
55 out.println(
" - - - System info - - - ");
56 out.println(
"OS: " + System.getProperty(
"os.name"));
57 out.println(
"VM: " + System.getProperty(
"java.vm.name"));
59 String rootrel_build_tmp = System.getProperty(
"rootrel.build");
60 if(
null==rootrel_build_tmp || rootrel_build_tmp.length()==0) {
61 rootrel_build_tmp =
"build" ;
68 final File executionRoot =
new File(
BuildUtil.class.getProtectionDomain().getCodeSource().getLocation().toURI());
69 out.println(
"execution root: " + executionRoot);
70 gluegenRoot = executionRoot.getParentFile().getParentFile().getParentFile().getParentFile().toString();
71 out.println(
"gluegen project root: " +
gluegenRoot);
72 }
catch (
final URISyntaxException ex) {
73 throw new RuntimeException(
"can not determine gluegen root", ex);
79 out.println(
"path: "+
path);
81 out.println(
" - - - - - - - - - - - - ");
86 project =
new Project();
91 final DefaultLogger logger =
new DefaultLogger();
92 logger.setErrorPrintStream(out);
93 logger.setOutputPrintStream(out);
94 logger.setMessageOutputLevel(Project.MSG_WARN);
95 project.addBuildListener(logger);
99 final File buildFile =
new File(
path,
"build.xml");
100 if(!buildFile.exists()) {
101 throw new RuntimeException(
"buildfile "+buildFile+
" does not exist");
104 ProjectHelper.configureProject(project, buildFile);
108 final String tmp = System.getProperty(name);
109 if(
null!=tmp && tmp.length()>0) {
110 p.setProperty(name, tmp);
116 out.println(
"cleaning generated files");
126 out.println(
"compiling java files");
127 project.executeTarget(
"compile.java");
136 out.println(
"compiling native files");
137 project.executeTarget(
"compile.native");
141 public static void generate(
final String bindingName) {
146 public static void generate(
final String bindingName,
final String emitter) {
147 generate(bindingName, bindingName, emitter);
149 public static void generate(
final String bindingName,
final String header,
final String emitter) {
151 out.println(
"generate binding to '" + bindingName+
"' using '"+emitter+
"'");
156 "-C"+
path+
"/"+bindingName+
".cfg",
157 path+
"/"+header+
".h" );
165 final File[] files =
path.listFiles();
166 for (
int i = 0; i < files.length; i++) {
167 if (files[i].isDirectory()) {
static void cleanGeneratedFiles()
static void generate(final String bindingName)
static void compileJava()
fails if ant script fails (which is a good thing).
static void compileNatives()
fails if ant script fails (which is a good thing) executeTarget throws RuntimeException on failure
static void deleteDirectory(final File path)
static void generate(final String bindingName, final String emitter)
static void generate(final String bindingName, final String header, final String emitter)
static final String rootrel_build
static Project passSystemProperty(final Project p, final String name)
static final String testOutput
static final String gluegenRoot
Glue code generator for C functions and data structures.
static void main(final String... args)