| <project name="Antlr3JavaScriptRuntime" basedir=".." default="build"> |
| <description> |
| Build procedure and task automation for the ANTLR JavaScript target. |
| </description> |
| |
| <property name="build.dir" value="${basedir}/build" /> |
| <property name="out.dir" value="${build.dir}/out" /> |
| <property name="lib.dir" value="${basedir}/lib" /> |
| <property name="doc.dir" value="${basedir}/doc" /> |
| <property name="test.dir" value="${basedir}/tests" /> |
| <property name="src.dir" value="${basedir}/src" /> |
| <property name="third.dir" value="${basedir}/third" /> |
| <property file="${build.dir}/antlr3.properties" /> |
| |
| <taskdef file="${third.dir}/antcontrib.properties" classpath="${third.dir}/ant-contrib-1.0b3.jar" /> |
| |
| <!-- ******* --> |
| <!-- LIBRARY --> |
| <!-- ******* --> |
| |
| <target name="build" depends="-init" description="Build ANTLR JavaScript runtime library."> |
| <antcall target="-make-debug" /> |
| <antcall target="-make-min" /> |
| <!--<antcall target="-make-docs" />--> |
| <antcall target="-del-build" /> |
| </target> |
| |
| <!-- Make uncompressed JS runtime files --> |
| <target name="-make-debug"> |
| <!-- no file name suffix for debug files --> |
| <property name="debugormin" value="" /> |
| <antcall target="-make-packages" inheritall="true" /> |
| </target> |
| |
| <!-- Make compressed JS files --> |
| <target name="-make-min"> |
| <property name="debugormin" value="-min" /> |
| <antcall target="-make-packages" inheritall="true" /> |
| </target> |
| |
| <!-- Make each package defined in atlr3.list --> |
| <target name="-make-packages"> |
| <property name="pkg" value="" /> |
| <foreach list="${antlr3.list}" target="-make-package" param="pkg" inheritall="true" /> |
| </target> |
| |
| <!-- Create a package --> |
| <target name="-make-package"> |
| <var name="package" value="${pkg}" /> |
| <property name="dest" value="${lib.dir}/antlr3-${package}${debugormin}.js" /> |
| <propertycopy property="list" from="antlr3.${package}.list" override="true" /> |
| <propertyregex property="list" input="${list}" regexp=" +" replace="" override="true" /> |
| |
| <concat destfile="${dest}"> |
| <filelist dir="${src.dir}" files="${list}" /> |
| </concat> |
| |
| <if> |
| <equals arg1="${debugormin}" arg2="-min" /> |
| <then> |
| <antcall target="-compress" inheritall="true" /> |
| </then> |
| </if> |
| |
| <antcall target="-add-license" inheritall="true" /> |
| </target> |
| |
| <!-- Compress JavaScript using Closure Compiler --> |
| <target name="-compress"> |
| <java fork="true" jar="${third.dir}/compiler.jar"> |
| <arg line="--js" /> |
| <arg value="${dest}" /> |
| <arg line="--js_output_file" /> |
| <arg line="${dest}.tmp" /> |
| </java> |
| <move file="${dest}.tmp" tofile="${dest}" /> |
| </target> |
| |
| <!-- insert required legaleze at the top of a file --> |
| <target name="-add-license"> |
| <property name="tmp-file" value="${dest}.tmp" /> |
| <move file="${dest}" tofile="${tmp-file}" /> |
| <concat destfile="${dest}"> |
| <header file="${build.dir}/${antlr3.license}" /> |
| <fileset file="${tmp-file}" /> |
| </concat> |
| <delete file="${tmp-file}" /> |
| </target> |
| |
| <!-- delete build directory --> |
| <target name="-del-build"> |
| <delete dir="${out.dir}" /> |
| </target> |
| |
| <!-- ***** --> |
| <!-- TESTS --> |
| <!-- ***** --> |
| |
| <target name="compile-tests" depends="build" description="Compile all test grammars."> |
| <foreach target="-compile-test-class" param="testdirectory" inheritall="true"> |
| <path> |
| <dirset dir="${test.dir}" includes="*" excludes="README" /> |
| </path> |
| </foreach> |
| </target> |
| |
| <target name="-compile-test-class" > |
| <foreach target="-compile-single-test" param="grammar" inheritall="true"> |
| <path> |
| <fileset dir="${testdirectory}" includes="*.g" excludes="*__.g" /> |
| </path> |
| </foreach> |
| </target> |
| |
| <target name="-compile-single-test"> |
| <!-- turn on antlr tracing if necessary --> |
| <var name="g" value="${grammar}" /> |
| <loadfile property="g-contents" srcfile="${g}" /> |
| <var name="opt" value="" /> |
| <property name="trace-key" value="// @@ANTLR Tool Options@@: -trace" /> |
| <if> |
| <contains string="${g-contents}" substring="${trace-key}" /> |
| <then> |
| <var name="opt" value="-trace" /> |
| </then> |
| </if> |
| |
| <java dir="${testdirectory}" jar="${antlr3.tool}" fork="yes"> |
| <arg line="${opt}" /> |
| <arg line="${g}" /> |
| </java> |
| </target> |
| |
| <!-- **** --> |
| <!-- DOCS --> |
| <!-- **** --> |
| |
| <target name="make-docs" description="Generate jsdoc API documentation." depends="-init"> |
| <property name="jsdoc.dir" value="${third.dir}/jsdoc-toolkit" /> |
| <property name="docs.dir" value="${lib.dir}/docs" /> |
| |
| <mkdir dir="${docs.dir}" /> |
| <java jar="${jsdoc.dir}/jsrun.jar" fork="yes"> |
| <arg line="${jsdoc.dir}/app/run.js ${src.dir} -r=10 -t=${jsdoc.dir}/templates/jsdoc -d=${docs.dir}" /> |
| </java> |
| </target> |
| |
| <target name="-init"> |
| <!-- clear build dir --> |
| <delete dir="${out.dir}" quiet="true" /> |
| <mkdir dir="${out.dir}" /> |
| </target> |
| </project> |