1 <?xml version="1.0" encoding="UTF-8"?>
3 <project name="dol" default="runexample" basedir=".">
6 Ant build file to build and run examples.
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"/> -->
14 <!-- external java binaries -->
15 <property name="java.executable" value="/usr/sepp/bin/java"/>
16 <property name="javac.executable" value="/usr/sepp/bin/javac"/>
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"/>
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 -->
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"/>
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"/>
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"/>
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}"/>
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"/>
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}"
79 <classpath path="${jars}"/>
80 <arg line="${example.dir}/example${number}/example${number}.xml"/>
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}"
91 <classpath path="${jars}"/>
92 <arg line="${example.dir}/example${number}/example${number}.xml Example${number}Generator"/>
95 <javac srcdir="example${number}"
96 destdir="example${number}"
97 includes="Example${number}Generator.java"
98 fork="${use.external.javac}"
99 executable="${javac.executable}"/>
101 <java classname="Example${number}Generator"
102 output="example${number}/example${number}_flattened.xml"
105 <classpath path="example${number}"/>
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}"
115 jvm="${java.executable}"
117 <classpath path="${jars}"/>
118 <arg line="${example.dir}/example${number}/example${number}.xml Example${number}Generator"/>
121 <javac srcdir="example${number}"
122 destdir="example${number}"
123 includes="Example${number}Generator.java"
124 fork="${use.external.javac}"
125 executable="${javac.executable}"/>
127 <java classname="Example${number}Generator"
128 output="example${number}/example${number}_flattened.xml"
130 jvm="${java.executable}"
132 <classpath path="example${number}"/>
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}"
143 <classpath path="${jars}"/>
144 <arg line="-P example${number}_flattened.xml -D example${number}.dot --${generator} ${generator} -c"/>
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}"
154 <classpath path="${jars}"/>
155 <arg line="-P example${number}_flattened.xml -D example${number}.dot -Rmparm mparm -c"/>
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}"
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"/>
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}"
176 jvm="${java.executable}"
178 <classpath path="${jars}"/>
179 <arg line="-P example${number}_flattened.xml -D example${number}.dot --${generator} ${generator} -c"/>
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}"
188 jvm="${java.executable}"
190 <classpath path="${jars}"/>
191 <arg line="-P example${number}_flattened.xml -D example${number}.dot -Rmparm mparm -c"/>
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}"
200 jvm="${java.executable}"
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"/>
208 <!-- create and run SystemC application -->
209 <target name="execute">
210 <!-- the first two tasks are needed to avoid make's clock skew warning -->
212 <format property="touch.time"
213 pattern="MM/dd/yyyy hh:mm aa"
214 offset="-5" unit="second"/>
216 <touch datetime="${touch.time}">
217 <fileset dir="example${number}"/>
220 <echo message="Make ${generator} application."/>
221 <exec executable="make" dir="example${number}/${generator}/src"/>
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"/>
228 <fileset dir="example${number}/${generator}/src" includes="log.txt"/>
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"/>
240 <!-- run the application generator -->
241 <target name="applicationgenerator">
242 <java classname="dol.util.ApplicationGenerator" failonerror="true" fork="true">
243 <classpath path="${jars}"/>
247 <!-- recursively delete a directory -->
248 <macrodef name="deletedirectory">
249 <attribute name="dir"/>
251 <delete includeemptydirs="true" quiet="true">
252 <fileset dir="${dir}" includes="**/*"/>
257 <target name="showversion">
258 <antcall target="showantversion"/>
259 <antcall target="showjavaversion1"/>
260 <antcall target="showjavaversion2"/>
261 <antcall target="showjavacversion1"/>
262 <antcall target="showjavacversion2"/>
265 <target name="showantversion">
266 <echo message="Use ${ant.version}."/>
269 <target name="showjavacversion1" unless="use.external.javac">
270 <echo message="Use Java version ${java.version} (required version: 1.5.0 or higher)."/>
273 <target name="showjavacversion2" if="use.external.javac">
274 <echo message="Use the following javac: ${javac.executable}."/>
277 <target name="showjavaversion1" unless="use.external.java">
278 <echo message="Use Java version ${java.version} (required version: 1.5.0 or higher)."/>
281 <target name="showjavaversion2" if="use.external.java">
282 <echo message="Use the following java: ${java.executable}."/>