xref: /aosp_15_r20/external/antlr/runtime/JavaScript/build/build.xml (revision 16467b971bd3e2009fad32dd79016f2c7e421deb)
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