1*16467b97STreehugger Robot<project name="Antlr3JavaScriptRuntime" basedir=".." default="build"> 2*16467b97STreehugger Robot<description> 3*16467b97STreehugger RobotBuild procedure and task automation for the ANTLR JavaScript target. 4*16467b97STreehugger Robot</description> 5*16467b97STreehugger Robot 6*16467b97STreehugger Robot <property name="build.dir" value="${basedir}/build" /> 7*16467b97STreehugger Robot <property name="out.dir" value="${build.dir}/out" /> 8*16467b97STreehugger Robot <property name="lib.dir" value="${basedir}/lib" /> 9*16467b97STreehugger Robot <property name="doc.dir" value="${basedir}/doc" /> 10*16467b97STreehugger Robot <property name="test.dir" value="${basedir}/tests" /> 11*16467b97STreehugger Robot <property name="src.dir" value="${basedir}/src" /> 12*16467b97STreehugger Robot <property name="third.dir" value="${basedir}/third" /> 13*16467b97STreehugger Robot <property file="${build.dir}/antlr3.properties" /> 14*16467b97STreehugger Robot 15*16467b97STreehugger Robot <taskdef file="${third.dir}/antcontrib.properties" classpath="${third.dir}/ant-contrib-1.0b3.jar" /> 16*16467b97STreehugger Robot 17*16467b97STreehugger Robot <!-- ******* --> 18*16467b97STreehugger Robot <!-- LIBRARY --> 19*16467b97STreehugger Robot <!-- ******* --> 20*16467b97STreehugger Robot 21*16467b97STreehugger Robot <target name="build" depends="-init" description="Build ANTLR JavaScript runtime library."> 22*16467b97STreehugger Robot <antcall target="-make-debug" /> 23*16467b97STreehugger Robot <antcall target="-make-min" /> 24*16467b97STreehugger Robot <!--<antcall target="-make-docs" />--> 25*16467b97STreehugger Robot <antcall target="-del-build" /> 26*16467b97STreehugger Robot </target> 27*16467b97STreehugger Robot 28*16467b97STreehugger Robot <!-- Make uncompressed JS runtime files --> 29*16467b97STreehugger Robot <target name="-make-debug"> 30*16467b97STreehugger Robot <!-- no file name suffix for debug files --> 31*16467b97STreehugger Robot <property name="debugormin" value="" /> 32*16467b97STreehugger Robot <antcall target="-make-packages" inheritall="true" /> 33*16467b97STreehugger Robot </target> 34*16467b97STreehugger Robot 35*16467b97STreehugger Robot <!-- Make compressed JS files --> 36*16467b97STreehugger Robot <target name="-make-min"> 37*16467b97STreehugger Robot <property name="debugormin" value="-min" /> 38*16467b97STreehugger Robot <antcall target="-make-packages" inheritall="true" /> 39*16467b97STreehugger Robot </target> 40*16467b97STreehugger Robot 41*16467b97STreehugger Robot <!-- Make each package defined in atlr3.list --> 42*16467b97STreehugger Robot <target name="-make-packages"> 43*16467b97STreehugger Robot <property name="pkg" value="" /> 44*16467b97STreehugger Robot <foreach list="${antlr3.list}" target="-make-package" param="pkg" inheritall="true" /> 45*16467b97STreehugger Robot </target> 46*16467b97STreehugger Robot 47*16467b97STreehugger Robot <!-- Create a package --> 48*16467b97STreehugger Robot <target name="-make-package"> 49*16467b97STreehugger Robot <var name="package" value="${pkg}" /> 50*16467b97STreehugger Robot <property name="dest" value="${lib.dir}/antlr3-${package}${debugormin}.js" /> 51*16467b97STreehugger Robot <propertycopy property="list" from="antlr3.${package}.list" override="true" /> 52*16467b97STreehugger Robot <propertyregex property="list" input="${list}" regexp=" +" replace="" override="true" /> 53*16467b97STreehugger Robot 54*16467b97STreehugger Robot <concat destfile="${dest}"> 55*16467b97STreehugger Robot <filelist dir="${src.dir}" files="${list}" /> 56*16467b97STreehugger Robot </concat> 57*16467b97STreehugger Robot 58*16467b97STreehugger Robot <if> 59*16467b97STreehugger Robot <equals arg1="${debugormin}" arg2="-min" /> 60*16467b97STreehugger Robot <then> 61*16467b97STreehugger Robot <antcall target="-compress" inheritall="true" /> 62*16467b97STreehugger Robot </then> 63*16467b97STreehugger Robot </if> 64*16467b97STreehugger Robot 65*16467b97STreehugger Robot <antcall target="-add-license" inheritall="true" /> 66*16467b97STreehugger Robot </target> 67*16467b97STreehugger Robot 68*16467b97STreehugger Robot <!-- Compress JavaScript using Closure Compiler --> 69*16467b97STreehugger Robot <target name="-compress"> 70*16467b97STreehugger Robot <java fork="true" jar="${third.dir}/compiler.jar"> 71*16467b97STreehugger Robot <arg line="--js" /> 72*16467b97STreehugger Robot <arg value="${dest}" /> 73*16467b97STreehugger Robot <arg line="--js_output_file" /> 74*16467b97STreehugger Robot <arg line="${dest}.tmp" /> 75*16467b97STreehugger Robot </java> 76*16467b97STreehugger Robot <move file="${dest}.tmp" tofile="${dest}" /> 77*16467b97STreehugger Robot </target> 78*16467b97STreehugger Robot 79*16467b97STreehugger Robot <!-- insert required legaleze at the top of a file --> 80*16467b97STreehugger Robot <target name="-add-license"> 81*16467b97STreehugger Robot <property name="tmp-file" value="${dest}.tmp" /> 82*16467b97STreehugger Robot <move file="${dest}" tofile="${tmp-file}" /> 83*16467b97STreehugger Robot <concat destfile="${dest}"> 84*16467b97STreehugger Robot <header file="${build.dir}/${antlr3.license}" /> 85*16467b97STreehugger Robot <fileset file="${tmp-file}" /> 86*16467b97STreehugger Robot </concat> 87*16467b97STreehugger Robot <delete file="${tmp-file}" /> 88*16467b97STreehugger Robot </target> 89*16467b97STreehugger Robot 90*16467b97STreehugger Robot <!-- delete build directory --> 91*16467b97STreehugger Robot <target name="-del-build"> 92*16467b97STreehugger Robot <delete dir="${out.dir}" /> 93*16467b97STreehugger Robot </target> 94*16467b97STreehugger Robot 95*16467b97STreehugger Robot <!-- ***** --> 96*16467b97STreehugger Robot <!-- TESTS --> 97*16467b97STreehugger Robot <!-- ***** --> 98*16467b97STreehugger Robot 99*16467b97STreehugger Robot <target name="compile-tests" depends="build" description="Compile all test grammars."> 100*16467b97STreehugger Robot <foreach target="-compile-test-class" param="testdirectory" inheritall="true"> 101*16467b97STreehugger Robot <path> 102*16467b97STreehugger Robot <dirset dir="${test.dir}" includes="*" excludes="README" /> 103*16467b97STreehugger Robot </path> 104*16467b97STreehugger Robot </foreach> 105*16467b97STreehugger Robot </target> 106*16467b97STreehugger Robot 107*16467b97STreehugger Robot <target name="-compile-test-class" > 108*16467b97STreehugger Robot <foreach target="-compile-single-test" param="grammar" inheritall="true"> 109*16467b97STreehugger Robot <path> 110*16467b97STreehugger Robot <fileset dir="${testdirectory}" includes="*.g" excludes="*__.g" /> 111*16467b97STreehugger Robot </path> 112*16467b97STreehugger Robot </foreach> 113*16467b97STreehugger Robot </target> 114*16467b97STreehugger Robot 115*16467b97STreehugger Robot <target name="-compile-single-test"> 116*16467b97STreehugger Robot <!-- turn on antlr tracing if necessary --> 117*16467b97STreehugger Robot <var name="g" value="${grammar}" /> 118*16467b97STreehugger Robot <loadfile property="g-contents" srcfile="${g}" /> 119*16467b97STreehugger Robot <var name="opt" value="" /> 120*16467b97STreehugger Robot <property name="trace-key" value="// @@ANTLR Tool Options@@: -trace" /> 121*16467b97STreehugger Robot <if> 122*16467b97STreehugger Robot <contains string="${g-contents}" substring="${trace-key}" /> 123*16467b97STreehugger Robot <then> 124*16467b97STreehugger Robot <var name="opt" value="-trace" /> 125*16467b97STreehugger Robot </then> 126*16467b97STreehugger Robot </if> 127*16467b97STreehugger Robot 128*16467b97STreehugger Robot <java dir="${testdirectory}" jar="${antlr3.tool}" fork="yes"> 129*16467b97STreehugger Robot <arg line="${opt}" /> 130*16467b97STreehugger Robot <arg line="${g}" /> 131*16467b97STreehugger Robot </java> 132*16467b97STreehugger Robot </target> 133*16467b97STreehugger Robot 134*16467b97STreehugger Robot <!-- **** --> 135*16467b97STreehugger Robot <!-- DOCS --> 136*16467b97STreehugger Robot <!-- **** --> 137*16467b97STreehugger Robot 138*16467b97STreehugger Robot <target name="make-docs" description="Generate jsdoc API documentation." depends="-init"> 139*16467b97STreehugger Robot <property name="jsdoc.dir" value="${third.dir}/jsdoc-toolkit" /> 140*16467b97STreehugger Robot <property name="docs.dir" value="${lib.dir}/docs" /> 141*16467b97STreehugger Robot 142*16467b97STreehugger Robot <mkdir dir="${docs.dir}" /> 143*16467b97STreehugger Robot <java jar="${jsdoc.dir}/jsrun.jar" fork="yes"> 144*16467b97STreehugger Robot <arg line="${jsdoc.dir}/app/run.js ${src.dir} -r=10 -t=${jsdoc.dir}/templates/jsdoc -d=${docs.dir}" /> 145*16467b97STreehugger Robot </java> 146*16467b97STreehugger Robot </target> 147*16467b97STreehugger Robot 148*16467b97STreehugger Robot <target name="-init"> 149*16467b97STreehugger Robot <!-- clear build dir --> 150*16467b97STreehugger Robot <delete dir="${out.dir}" quiet="true" /> 151*16467b97STreehugger Robot <mkdir dir="${out.dir}" /> 152*16467b97STreehugger Robot </target> 153*16467b97STreehugger Robot</project> 154