dol: initial dol commit
[jump.git] / dol / examples / runexample.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2
3 <project name="dol" default="runexample" basedir=".">
4
5   <description>
6     Ant build file to build and run examples.
7   </description>
8
9   <!-- java compiler properties: a java compiler for Java Platform 5.0 is required -->
10   <!-- do _not_ comment out the following line to use the specified external java compiler and virtual machine -->
11   <!-- <property name="use.external.java" value="yes"/> -->
12   <!-- <property name="use.external.javac" value="yes"/> -->
13
14   <!-- external java binaries -->
15   <property name="java.executable" value="/usr/sepp/bin/java"/>
16   <property name="javac.executable" value="/usr/sepp/bin/javac"/>
17
18   <!-- directory paths -->
19   <property name="lib.dir"     location="./../../../jars"/>
20   <property name="bin.dir"     location="./../../../bin"/>
21   <property name="jars"        value=".:./..:${lib.dir}/dol.jar:${lib.dir}/xercesImpl.jar:${lib.dir}/jdom.jar:${bin.dir}/dol.jar:${bin.dir}/xercesImpl.jar:${bin.dir}/jdom.jar"/>
22   <property name="example.dir" location="./../../../examples"/>
23
24   <!-- these properties can be overwritten using the -D option when calling ant, e.g.: -Dnumber=2 -Dgenerator=protothread -->
25   <property name="number" value="1"/>
26   <property name="generator" value="HdS"/> <!-- HdS, protothread, systemC, PaF, rtems, yapi -->
27
28
29   <!-- main target: calls all the targets required to run an example -->
30   <target name="runexample" depends="showversion">
31     <antcall target="prepare"/>
32     <antcall target="validate"/>
33     <antcall target="flatten1"/>
34     <antcall target="flatten2"/>
35     <antcall target="dol1"/>
36     <antcall target="dol2"/>
37     <antcall target="execute"/>
38   </target>
39
40   <target name="mparm" depends="showversion">
41     <antcall target="prepare"/>
42     <antcall target="validate"/>
43     <antcall target="flatten1"/>
44     <antcall target="flatten2"/>
45     <antcall target="dol_mparm1"/>
46     <antcall target="dol_mparm2"/>
47   </target>
48
49   <target name="cell" depends="showversion">
50     <antcall target="prepare"/>
51     <antcall target="validate"/>
52     <antcall target="flatten1"/>
53     <antcall target="flatten2"/>
54     <antcall target="dol_cell1"/>
55     <antcall target="dol_cell2"/>
56   </target>
57
58   <!-- prepare directory structure and copy sources -->
59   <target name="prepare">
60     <echo message="Create directory example${number}."/>
61     <deletedirectory dir="example${number}"/>
62     <mkdir dir="example${number}"/>
63
64     <echo message="Copy C source files."/>
65     <deletedirectory dir="example${number}/src"/>
66     <mkdir dir="example${number}/src"/>
67     <copy todir="example${number}/src">
68       <fileset dir="${example.dir}/example${number}/src" includes="*.h *.c"/>
69     </copy>
70   </target>
71
72   <!-- validateXML by means of external schema -->
73   <target name="validate" unless="use.external.java">
74     <echo message="check XML compliance of example${number}_flattened.xml."/>
75     <java classname="dol.helper.validator.XMLValidator"
76           dir="example${number}"
77           fork="true"
78           failonerror="true">
79       <classpath path="${jars}"/>
80       <arg line="${example.dir}/example${number}/example${number}.xml"/>
81     </java>
82   </target>
83
84   <!-- create flattened XML (non-external java version) -->
85   <target name="flatten1" unless="use.external.java">
86     <echo message="Create flattened XML example${number}_flattened.xml."/>
87     <java classname="dol.helper.flattener.XMLFlattener"
88           dir="example${number}"
89           fork="true"
90           failonerror="true">
91       <classpath path="${jars}"/>
92       <arg line="${example.dir}/example${number}/example${number}.xml Example${number}Generator"/>
93     </java>
94
95     <javac srcdir="example${number}"
96            destdir="example${number}"
97            includes="Example${number}Generator.java"
98            fork="${use.external.javac}"
99            executable="${javac.executable}"/>
100
101     <java classname="Example${number}Generator"
102           output="example${number}/example${number}_flattened.xml"
103           fork="true"
104           failonerror="true">
105       <classpath path="example${number}"/>
106     </java>
107   </target>
108
109   <!-- create flattened XML (external java version) -->
110   <target name="flatten2" if="use.external.java">
111     <echo message="Create flattened XML example${number}_flattened.xml."/>
112     <java classname="dol.helper.flattener.XMLFlattener"
113           dir="example${number}"
114           fork="true"
115           jvm="${java.executable}"
116           failonerror="true">
117       <classpath path="${jars}"/>
118       <arg line="${example.dir}/example${number}/example${number}.xml Example${number}Generator"/>
119     </java>
120
121     <javac srcdir="example${number}"
122            destdir="example${number}"
123            includes="Example${number}Generator.java"
124            fork="${use.external.javac}"
125            executable="${javac.executable}"/>
126
127     <java classname="Example${number}Generator"
128           output="example${number}/example${number}_flattened.xml"
129           fork="true"
130           jvm="${java.executable}"
131           failonerror="true">
132       <classpath path="example${number}"/>
133     </java>
134   </target>
135
136   <!-- run DOL (non-external java version) -->
137   <target name="dol1" unless="use.external.java">
138     <echo message="Run DOL."/>
139     <java classname="dol.main.Main"
140           dir="example${number}"
141           fork="true"
142           failonerror="true">
143       <classpath path="${jars}"/>
144       <arg line="-P example${number}_flattened.xml -D example${number}.dot --${generator} ${generator} -c"/> 
145     </java>
146   </target>
147
148   <target name="dol_mparm1" unless="use.external.java">
149     <echo message="Run mparm generation."/>
150     <java classname="dol.main.Main"
151           dir="example${number}"
152           fork="true"
153           failonerror="true">
154       <classpath path="${jars}"/>
155       <arg line="-P example${number}_flattened.xml -D example${number}.dot -Rmparm mparm -c"/>
156     </java>
157   </target>
158
159   <target name="dol_cell1" unless="use.external.java">
160     <echo message="Run cell generation."/>
161     <java classname="dol.main.Main"
162           dir="example${number}"
163           fork="true"
164           failonerror="true">
165       <classpath path="${jars}"/>
166       <arg line="-P example${number}_flattened.xml -D example${number}.dot --cbe cell --platform ./../../../../examples/example${number}/cell.xml --mapping ./../../../../examples/example${number}/mapping.xml -c"/>
167     </java>
168   </target>
169
170   <!-- run DOL (external java version) -->
171   <target name="dol2" if="use.external.java">
172     <echo message="Run DOL."/>
173     <java classname="dol.main.Main"
174           dir="example${number}"
175           fork="true"
176           jvm="${java.executable}"
177           failonerror="true">
178       <classpath path="${jars}"/>
179       <arg line="-P example${number}_flattened.xml -D example${number}.dot --${generator} ${generator} -c"/> 
180     </java>
181   </target>
182
183   <target name="dol_mparm2" if="use.external.java">
184     <echo message="Run mparm generation."/>
185     <java classname="dol.main.Main"
186           dir="example${number}"
187           fork="true"
188           jvm="${java.executable}"
189           failonerror="true">
190       <classpath path="${jars}"/>
191       <arg line="-P example${number}_flattened.xml -D example${number}.dot -Rmparm mparm -c"/>
192     </java>
193   </target>
194
195   <target name="dol_cell2" if="use.external.java">
196     <echo message="Run cell generation."/>
197     <java classname="dol.main.Main"
198           dir="example${number}"
199           fork="true"
200           jvm="${java.executable}"
201           failonerror="true">
202       <classpath path="${jars}"/>
203       <arg line="-P example${number}_flattened.xml -D example${number}.dot --cbe cell --platform cell.xml --mapping mapping.xml -c"/>
204     </java>
205   </target>
206
207
208   <!-- create and run SystemC application -->
209   <target name="execute">
210     <!-- the first two tasks are needed to avoid make's clock skew warning -->
211     <tstamp>
212       <format property="touch.time"
213               pattern="MM/dd/yyyy hh:mm aa"
214               offset="-5" unit="second"/>
215     </tstamp>
216     <touch datetime="${touch.time}">
217       <fileset dir="example${number}"/>
218     </touch>
219
220     <echo message="Make ${generator} application."/>
221     <exec executable="make" dir="example${number}/${generator}/src"/>
222
223     <echo message="Run ${generator} application."/>
224     <exec executable="${basedir}/example${number}/${generator}/src/sc_application"
225           output="example${number}/${generator}/src/log.txt"
226           error="example${number}/${generator}/src/errorlog.txt"/>
227     <concat>
228       <fileset dir="example${number}/${generator}/src" includes="log.txt"/>
229     </concat>
230   </target>
231
232   <!-- run the XML checker -->
233   <target name="checkxmls">
234     <java classname="dol.util.CheckXMLs" failonerror="true" fork="true">
235        <classpath path="${jars}"/>
236        <arg line="${example.dir}/examplecell/examplecell.xml ${example.dir}/examplecell/cell.xml ${example.dir}/examplecell/mapping.xml"/>
237     </java>
238   </target>
239
240   <!-- run the application generator -->
241   <target name="applicationgenerator">
242     <java classname="dol.util.ApplicationGenerator" failonerror="true" fork="true">
243        <classpath path="${jars}"/>
244     </java>
245   </target>
246
247   <!-- recursively delete a directory -->
248   <macrodef name="deletedirectory">
249     <attribute name="dir"/>
250     <sequential>
251       <delete includeemptydirs="true" quiet="true">
252         <fileset dir="${dir}" includes="**/*"/>
253       </delete>
254     </sequential>
255   </macrodef>
256
257   <target name="showversion">
258     <antcall target="showantversion"/>
259     <antcall target="showjavaversion1"/>
260     <antcall target="showjavaversion2"/>
261     <antcall target="showjavacversion1"/>
262     <antcall target="showjavacversion2"/>
263   </target>
264
265   <target name="showantversion">
266     <echo message="Use ${ant.version}."/>
267   </target>
268
269   <target name="showjavacversion1" unless="use.external.javac">
270     <echo message="Use Java version ${java.version} (required version: 1.5.0 or higher)."/>
271   </target>
272
273   <target name="showjavacversion2" if="use.external.javac">
274     <echo message="Use the following javac: ${javac.executable}."/>
275   </target>
276
277   <target name="showjavaversion1" unless="use.external.java">
278     <echo message="Use Java version ${java.version} (required version: 1.5.0 or higher)."/>
279   </target>
280
281   <target name="showjavaversion2" if="use.external.java">
282     <echo message="Use the following java: ${java.executable}."/>
283   </target>
284
285 </project>