summaryrefslogtreecommitdiffstats
path: root/make/build-gluegen.xml
diff options
context:
space:
mode:
Diffstat (limited to 'make/build-gluegen.xml')
-rw-r--r--make/build-gluegen.xml181
1 files changed, 181 insertions, 0 deletions
diff --git a/make/build-gluegen.xml b/make/build-gluegen.xml
new file mode 100644
index 000000000..cac29362c
--- /dev/null
+++ b/make/build-gluegen.xml
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ - Ant build for JOGL's GlueGen and corresponding ANT task. This build
+ - should not be called directly. It is invoked from the main "build.xml"
+ - file and relies on the properties set therein.
+ -
+ - The optional.jar that contains the optional ANT tasks must be in the ANT
+ - classpath (typically the ant/lib directory).
+ -
+ - This build has been tested with ANT 1.5.3 and JOGL 1.1.1.1.
+ -
+ - Public targets:
+ - all: clean and build GlueGen and GlueGen Ant task
+ - clean: clean all built
+ -->
+<project name="JOGL.GlueGen" default="all">
+ <!-- ================================================================== -->
+ <!--
+ - Declare all paths and user defined variables.
+ -->
+ <target name="declare" description="Declare properties">
+
+ <!-- Create the classpath for ANTLR. This requires the user-defined
+ - "antlr.jar" property. -->
+ <path id="antlr.classpath">
+ <pathelement location="${antlr.jar}" />
+ </path>
+
+ <!-- The location of the GlueGen source and the C grammar files. -->
+ <property name="gluegen" value="${src.java}/com/sun/gluegen" />
+ <property name="c.grammar" value="${gluegen}/cgram" />
+
+ <!-- The resulting location of the generated Java files from the
+ - C grammar via ANTLR. -->
+ <property name="gluegen.build" value="${src.generated.java}/com/sun/gluegen" />
+ <property name="generated.java.from.grammar" value="${gluegen.build}/cgram" />
+
+ </target>
+
+ <!-- ================================================================== -->
+ <!--
+ - Build GlueGen.
+ -->
+ <target name="build.gluegen" depends="declare">
+
+ <!-- Because ANTLR looks for importVocab files in the current
+ working directory, it likes to have all of its files,
+ including supergrammars, in one place, so copy all of the
+ grammars to the output directory up front so we don't put
+ temporary files into the source tree -->
+ <mkdir dir="${generated.java.from.grammar}" />
+ <copy todir="${generated.java.from.grammar}">
+ <fileset dir="${c.grammar}">
+ <include name="*.g" />
+ </fileset>
+ </copy>
+
+ <!-- Generate the Java files from the C grammar using ANTLR. -->
+ <antcall target="generate.c.grammar">
+ <param name="output.dir" value="${generated.java.from.grammar}" />
+ <param name="target" value="StdCParser.g" />
+ </antcall>
+ <antcall target="generate.c.grammar.glib">
+ <param name="output.dir" value="${generated.java.from.grammar}" />
+ <param name="target" value="GnuCParser.g" />
+ <param name="glib" value="StdCParser.g" />
+ </antcall>
+ <antcall target="generate.c.grammar">
+ <param name="output.dir" value="${generated.java.from.grammar}" />
+ <param name="target" value="GnuCTreeParser.g" />
+ </antcall>
+ <antcall target="generate.c.grammar.glib">
+ <param name="output.dir" value="${generated.java.from.grammar}" />
+ <param name="target" value="GnuCEmitter.g" />
+ <param name="glib" value="GnuCTreeParser.g" />
+ </antcall>
+ <antcall target="generate.c.grammar.glib">
+ <param name="output.dir" value="${generated.java.from.grammar}" />
+ <param name="target" value="HeaderParser.g" />
+ <param name="glib" value="GnuCTreeParser.g" />
+ </antcall>
+
+ <!-- Ensure that the output classes directory exists. -->
+ <mkdir dir="${classes}" />
+
+ <!-- Build GlueGen using the generated Java files along with the
+ - original source.
+ - NOTE: GlueGenTask is NOT built at this time. It is done in
+ - a separate task. -->
+ <javac destdir="${classes}" includes="**/gluegen/**" excludes="**/GlueGenTask.java"
+ includeAntRuntime="false"
+ source="1.4" debug="true" debuglevel="${javacdebuglevel}">
+ <src path="${src.java}" />
+ <src path="${src.generated.java}" />
+ <classpath refid="antlr.classpath" />
+ </javac>
+
+ <!-- Inform the user that GlueGen has been successfully built. -->
+ <echo message="" />
+ <echo message="GlueGen has been built successfully." />
+ </target>
+
+ <!--
+ - Using ANTLR generate the specified Java files.
+ -
+ - @param target the grammar file to process
+ - @param output.dir the directory to write the generated files to. If
+ - the directory does not exist, it will be created.
+ -->
+ <target name="generate.c.grammar" depends="declare">
+ <!-- Generate the Java files -->
+ <antlr target="${output.dir}/${target}" outputdirectory="${output.dir}">
+ <classpath refid="antlr.classpath" />
+ </antlr>
+ </target>
+
+ <!--
+ - Using ANTLR generate the specified Java files with an overridden
+ - grammar file.
+ -
+ - @param target the grammar file to process
+ - @param glib the overridding grammar file
+ - @param output.dir the directory to write the generated files to. If
+ - the directory does not exist, it will be created.
+ -->
+ <target name="generate.c.grammar.glib" depends="declare">
+ <!-- Generate the Java files -->
+ <antlr target="${output.dir}/${target}" glib="${output.dir}/${glib}" outputdirectory="${output.dir}">
+ <classpath refid="antlr.classpath" />
+ </antlr>
+ </target>
+
+ <!-- ================================================================== -->
+ <!--
+ - Build the GlueGen ANT task.
+ -->
+ <target name="build.gluegen.task" depends="declare">
+ <!-- Ensure that the output classes directory exists. -->
+ <mkdir dir="${classes}" />
+
+ <!-- Build the GlueGen ANT task.
+ - NOTE: ONLY the GlueGenTask is built at this time. GlueGen
+ - itself is built in a separate task. -->
+ <javac destdir="${classes}" includes="**/GlueGenTask.java" source="1.4" debug="true" debuglevel="source,lines"
+ includeAntRuntime="false">
+ <src path="${src.java}" />
+ <classpath refid="antlr.classpath" />
+ </javac>
+
+ <!-- Inform the user that the GlueGen ANT task has been successfully
+ built. -->
+ <echo message="" />
+ <echo message="GlueGen ANT task has been built successfully." />
+ </target>
+
+ <!-- ================================================================== -->
+ <!--
+ - Clean up all that is built.
+ - NOTE: this is a bit heavy-handed as it may delete more than just
+ - what is built with this build.
+ -->
+ <target name="clean" depends="declare">
+ <delete includeEmptyDirs="true" quiet="true">
+ <fileset dir="${src.generated.java}" />
+ <fileset dir="${classes}" />
+ </delete>
+ </target>
+
+ <!-- ================================================================== -->
+ <!--
+ - Build GlueGen and the GlueGen ANT task.
+ -->
+ <target name="all" depends="declare">
+ <!-- Build GlueGen -->
+ <antcall target="build.gluegen" />
+
+ <!-- Build the GlueGen ANT task -->
+ <antcall target="build.gluegen.task" />
+ </target>
+
+</project>