<?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}/net/java/games/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}/net/java/games/gluegen" /> <property name="generated.java.from.grammar" value="${gluegen.build}/cgram" /> </target> <!-- ================================================================== --> <!-- - Build GlueGen. --> <target name="build.gluegen" depends="declare"> <!-- Generate the Java files from the C grammar using ANTLR. --> <antcall target="generate.c.grammar"> <param name="target" value="${c.grammar}/StdCParser.g" /> <param name="output.dir" value="${generated.java.from.grammar}" /> </antcall> <antcall target="generate.c.grammar.glib"> <param name="target" value="${c.grammar}/GnuCParser.g" /> <param name="glib" value="${c.grammar}/StdCParser.g" /> <param name="output.dir" value="${generated.java.from.grammar}" /> </antcall> <antcall target="generate.c.grammar"> <param name="target" value="${c.grammar}/GnuCTreeParser.g" /> <param name="output.dir" value="${generated.java.from.grammar}" /> </antcall> <antcall target="generate.c.grammar.glib"> <param name="target" value="${c.grammar}/GnuCEmitter.g" /> <param name="glib" value="${c.grammar}/GnuCTreeParser.g" /> <param name="output.dir" value="${generated.java.from.grammar}" /> </antcall> <antcall target="generate.c.grammar.glib"> <param name="target" value="${c.grammar}/HeaderParser.g" /> <param name="glib" value="${c.grammar}/GnuCTreeParser.g" /> <param name="output.dir" value="${generated.java.from.grammar}" /> </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" source="1.4" debug="true" debuglevel="source,lines"> <src path="${src}" /> <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"> <!-- Ensure that the output directory exists. - NOTE: this will ignore silently if the directory already exists. --> <mkdir dir="${output.dir}" /> <!-- Generate the Java files --> <antlr target="${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"> <!-- Ensure that the output directory exists. - NOTE: this will ignore silently if the directory already exists. --> <mkdir dir="${output.dir}" /> <!-- Generate the Java files --> <antlr target="${target}" glib="${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"> <src path="${src}" /> <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>