You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
154 lines
5.3 KiB
154 lines
5.3 KiB
<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>
|