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