1
<project default="all" basedir=".">
2
3
	<property environment="env"/>
4
5
	<tstamp/>
6
7
	<property name="sourceDir" value="." />
8
	<property name="outputDir" value="." />
9
10
	<property name="jambiLib" value="${outputDir}/lib" />
11
12
	<mkdir dir="${outputDir}/cpp" />
13
14
15
16
	<target name="help"
17
            description="Provides detailed help.">
18
		<echo>To build Qt Jambi, run ant without parameters.</echo>
19
		<echo>
20
		</echo>
21
		<echo>To get a description of all tasks run: ant -projecthelp</echo>
22
		<echo/>
23
		<echo>Available build properties:</echo>
24
		<echo>    -Dqtjambi.config=debug|release    Decide what native libraries</echo>
25
		<echo>                                      should be included.</echo>
26
		<echo>    -Dqtjambi.useJumpTable=true       Use jump tables for native functions (experimental)</echo>
27
		<echo>    -Dqtjambi.force=true              Skip up-to-date check and force all targets to build</echo>
28
		<echo/>
29
		<echo>You can also see the Qt Jambi intallation document at:</echo>
30
		<echo>http://doc.trolltech.com/qtjambi/com/trolltech/qt/qtjambi-installation.html</echo>
31
	</target>
32
33
	<condition property="ant-qtjambi.jar.uptodate">
34
		<and>
35
			<not>
36
				<isset property="qtjambi.force" />
37
			</not>
38
			<uptodate targetfile="${outputDir}/ant-qtjambi.jar" >
39
				<srcfiles dir= "${sourceDir}"
40
                          includes="com/trolltech/tools/ant/*.java,com/trolltech/qt/internal/Version.java,com/trolltech/qt/internal/OSInfo.java"/>
41
			</uptodate>
42
		</and>
43
	</condition>
44
45
	<target name="init.ant"
46
            unless="ant-qtjambi.jar.uptodate"
47
            description="Creates a .jar file containing all the Qt Jambi ant tasks.">
48
		<mkdir dir="${outputDir}/ant-qtjambi"/>
49
		<javac srcdir="${sourceDir}" destdir="${outputDir}/ant-qtjambi" target="1.5" debug="true">
50
			<include name="com/trolltech/tools/ant/*.java"/>
51
			<include name="com/trolltech/qt/internal/Version.java"/>
52
			<include name="com/trolltech/qt/internal/OSInfo.java"/>
53
		</javac>
54
		<jar destfile="${outputDir}/ant-qtjambi.jar">
55
			<fileset dir="${outputDir}/ant-qtjambi"/>
56
		</jar>
57
		<delete dir="${outputDir}/ant-qtjambi"/>
58
	</target>
59
60
	<target name="init.jumptable.do"
61
        description="Initialize the jump table..." if="qtjambi.useJumpTable">
62
		<echo>Using Native Jump Table. Please note that this feature is experimental...</echo>
63
		<property name="qtjambi.config.jumptable" value="jumptable"/>
64
		<property name="qtjambi.generator.jumptable" value="--native-jump-table"/>
65
	</target>
66
	<target name="init.jumptable.dont"
67
        description="Initialize the jump table..." unless="qtjambi.useJumpTable">
68
		<property name="qtjambi.config.jumptable" value=""/>
69
		<property name="qtjambi.generator.jumptable" value=""/>
70
	</target>
71
72
	<target name="init.taskdef"
73
            depends="init.ant, init.jumptable.do, init.jumptable.dont">
74
		<taskdef name="juic"      classpath="${outputDir}/ant-qtjambi.jar" classname="com.trolltech.tools.ant.JuicTask"/>
75
		<taskdef name="qmake"     classpath="${outputDir}/ant-qtjambi.jar" classname="com.trolltech.tools.ant.QMakeTask"/>
76
		<taskdef name="make"      classpath="${outputDir}/ant-qtjambi.jar" classname="com.trolltech.tools.ant.MakeTask"/>
77
		<taskdef name="generator" classpath="${outputDir}/ant-qtjambi.jar" classname="com.trolltech.tools.ant.GeneratorTask"/>
78
		<taskdef name="qtjambi-platform-jar" classpath="${outputDir}/ant-qtjambi.jar" classname="com.trolltech.tools.ant.PlatformJarTask"/>
79
		<taskdef name="qtjambi-initialize" classpath="${outputDir}/ant-qtjambi.jar" classname="com.trolltech.tools.ant.InitializeTask"/>
80
81
	</target>
82
83
	<target name="clean"
84
            description="Cleans everything.">
85
		<delete file="${outputDir}/ant-qtjambi.jar"/>
86
		<delete file="${outputDir}/qtjambi-${qtjambi.version}.jar"/>
87
		<delete file="${outputDir}/qtjambi-examples-${qtjambi.version}.jar"/>
88
		<delete file="${outputDir}/qtjambi-designer-${qtjambi.version}.jar"/>
89
		<delete file="${outputDir}/qtjambi-${qtjambi.osname}-${qtjambi.compiler}-${qtjambi.version}.jar"/>
90
		<delete file="${outputDir}/.compile.timestamp"/>
91
		<delete file="${outputDir}/generator/.compile.timestamp"/>
92
		<delete file="${outputDir}/generator/.run.timestamp"/>
93
		<delete dir="${outputDir}/bin"/>
94
		<delete dir="${outputDir}/lib"/>
95
		<delete dir="${outputDir}/cpp"/>
96
		<delete includeEmptyDirs="true">
97
			<fileset dir="${outputDir}" includes="**/*.class"/>
98
			<fileset dir="${outputDir}" includes="**/*.o"/>
99
			<fileset dir="${outputDir}" includes="**/moc_*.cpp"/>
100
			<fileset dir="${outputDir}" includes="**/*.obj"/>
101
			<fileset dir="${outputDir}" includes="**/*.pdb"/>
102
			<fileset dir="${outputDir}" includes="**/*.ilk"/>
103
			<fileset dir="${outputDir}" includes="**/release"/>
104
			<fileset dir="${outputDir}" includes="**/debug"/>
105
			<fileset dir="${outputDir}" includes="**/Makefile*"/>
106
		</delete>
107
	</target>
108
109
	<condition property="examples.juicfiles.uptodate">
110
		<and>
111
			<not>
112
				<isset property="qtjambi.force" />
113
			</not>
114
			<uptodate targetfile=".juic.run">
115
				<srcfiles dir="${outputDir}/com/trolltech/examples" includes="**/*.jui"/>
116
				<srcfiles dir="${outputDir}/com/trolltech/launcher" includes="*.jui"/>
117
				<srcfiles dir="${outputDir}/com/trolltech/demos" includes="**/*.jui"/>
118
			</uptodate>
119
		</and>
120
	</condition>
121
122
	<target name="examples.juic"
123
            depends="init"
124
            description="Generates Java source files from JUI files created by designer."
125
	    unless="examples.juicfiles.uptodate">
126
		<juic message="Running Juic for all it is worth"
127
          outputDir="${outputDir}"
128
              trFunction=""
129
              classNamePrefix=""
130
              alwaysUpdate="true"
131
          classpath="${sourceDir}">
132
			<include name="com/**/**.jui"/>
133
		</juic>
134
		<touch file="${outputDir}/.juic.run"/>
135
	</target>
136
137
	<target name="library.java.compile" depends="init">
138
		<javac memoryMaximumSize="1024m"
139
             fork="true"
140
             destdir="${outputDir}"
141
             debug="true"
142
             target="1.5">
143
			<src path="${outputDir}"/>
144
			<src path="${sourceDir}"/>
145
			<include name="com/trolltech/qt/*.java"/>
146
			<include name="com/trolltech/qt/*/*.java"/>
147
			<include name="com/trolltech/extensions/signalhandler/*.java"/>
148
		</javac>
149
	</target>
150
151
152
	<target name="library.java.bundle" depends="library.java.compile">
153
		<jar destfile="${outputDir}/qtjambi-${qtjambi.version}.jar"
154
             basedir="${outputDir}"
155
             includes="com/trolltech/qt/*.class,com/trolltech/qt/*/*.class,com/trolltech/extensions/signalhandler/*.class"
156
             includesfile="${sourceDir}/com/trolltech/images/qt-logo.png">
157
			<manifest>
158
				<attribute name="Built-By" value="${user.name} - ${TODAY}"/>
159
				<attribute name="Bundle-ManifestVersion" value="2" />
160
				<attribute name="Bundle-Name" value="QT Jambi" />
161
				<attribute name="Bundle-SymbolicName" value="com.trolltech.qt.jambi" />
162
				<attribute name="Bundle-Version" value="${qtjambi.osgi.version}" />
163
				<attribute name="Bundle-ActivationPolicy" value="lazy" />
164
				<attribute name="Bundle-RequiredExecutionEnvironment" value="J2SE-1.5" />
165
				<attribute name="Export-Package" value='com.trolltech.extensions.signalhandler;version="${qtjambi.osgi.version}",com.trolltech.qt;version="${qtjambi.osgi.version}",com.trolltech.qt.core;version="${qtjambi.osgi.version}",com.trolltech.qt.designer;version="${qtjambi.osgi.version}",com.trolltech.qt.gui;version="${qtjambi.osgi.version}",com.trolltech.qt.network;version="${qtjambi.osgi.version}",com.trolltech.qt.opengl;version="${qtjambi.osgi.version}",com.trolltech.qt.phonon;version="${qtjambi.osgi.version}",com.trolltech.qt.sql;version="${qtjambi.osgi.version}",com.trolltech.qt.svg;version="${qtjambi.osgi.version}",com.trolltech.qt.webkit;version="${qtjambi.osgi.version}",com.trolltech.qt.xml;version="${qtjambi.osgi.version}",com.trolltech.qt.xmlpatterns;version="${qtjambi.osgi.version}"' />
166
				<attribute name="Eclipse-BuddyPolicy" value="dependent" />
167
				<attribute name="Eclipse-ExtensibleAPI" value="true" />
168
			</manifest>
169
		</jar>
170
	</target>
171
172
	<target name="examples.phonon"
173
        depends="init"
174
        if="qtjambi.phonon">
175
		<javac destdir="${outputDir}" target="1.5" debug="true">
176
			<src path="${outputDir}"/>
177
			<src path="${sourceDir}"/>
178
			<include name="com/trolltech/demos/phonon/*.java"/>
179
			<include name="com/trolltech/examples/phonon/*.java"/>
180
		</javac>
181
	</target>
182
183
	<target name="examples.webkit"
184
        depends="init"
185
        if="qtjambi.webkit">
186
		<javac destdir="${outputDir}" target="1.5" debug="true">
187
			<src path="${outputDir}"/>
188
			<src path="${sourceDir}"/>
189
			<include name="com/trolltech/demos/webkit/*.java"/>
190
			<include name="com/trolltech/examples/webkit/*.java"/>
191
		</javac>
192
	</target>
193
194
	<target name="examples.xmlpatterns"
195
        depends="init"
196
        if="qtjambi.xmlpatterns">
197
		<javac destdir="${outputDir}" target="1.5" debug="true">
198
			<src path="${outputDir}"/>
199
			<src path="${sourceDir}"/>
200
			<include name="com/trolltech/demos/xmlpatterns/*.java"/>
201
			<include name="com/trolltech/examples/xmlpatterns/*.java"/>
202
		</javac>
203
	</target>
204
205
	<target name="examples.compile"
206
            depends="init, examples.phonon, examples.webkit, examples.xmlpatterns">
207
		<javac destdir="${outputDir}"
208
           debug="true"
209
           fork="true"
210
           memoryMaximumSize="1024m"
211
           target="1.5">
212
			<src path="${outputDir}"/>
213
			<src path="${sourceDir}"/>
214
			<include name="com/trolltech/demos/**/*.java"/>
215
			<include name="com/trolltech/examples/**/*.java"/>
216
			<include name="com/trolltech/launcher/*.java"/>
217
			<exclude name="com/trolltech/demos/phonon/*.java"/>
218
			<exclude name="com/trolltech/demos/xmlpatterns/*.java"/>
219
			<exclude name="com/trolltech/demos/webkit/*.java"/>
220
			<exclude name="com/trolltech/examples/phonon/*.java"/>
221
			<exclude name="com/trolltech/examples/xmlpatterns/*.java"/>
222
			<exclude name="com/trolltech/examples/webkit/*.java"/>
223
			<exclude name="com/trolltech/examples/generator/*.java"/>
224
			<exclude name="com/trolltech/demos/HelloGL.java"/>
225
			<exclude name="com/trolltech/examples/GeneratorExample.java"/>
226
		</javac>
227
228
		<copy todir="${outputDir}">
229
			<fileset dir="${sourceDir}">
230
				<include name="com/trolltech/examples/**/*"/>
231
				<include name="com/trolltech/demos/**/*"/>
232
				<include name="com/trolltech/launcher/*"/>
233
				<include name="com/trolltech/images/**/*"/>
234
				<exclude name="com/trolltech/**/*.java"/>
235
				<exclude name="com/trolltech/**/*.jui"/>
236
			</fileset>
237
		</copy>
238
	</target>
239
240
241
	<target name="examples.bundle"
242
        depends="examples.compile">
243
		<jar destfile="${outputDir}/qtjambi-examples-${qtjambi.version}.jar"
244
             basedir="${outputDir}/">
245
			<include name="com/trolltech/examples/**/*"/>
246
			<include name="com/trolltech/demos/**/*"/>
247
			<include name="com/trolltech/launcher/*"/>
248
			<include name="com/trolltech/images/**/*"/>
249
			<exclude name="com/trolltech/**/*.jui"/>
250
			<manifest>
251
				<attribute name="Built-By" value="${user.name} - ${TODAY}"/>
252
			</manifest>
253
		</jar>
254
	</target>
255
256
	<!-- 
257
	 ************************************************************
258
	 Library Compilation etc ...
259
	 ************************************************************
260
      -->
261
262
	<condition property="qtjambi.library.makefiles.uptodate">
263
		<and>
264
			<not>
265
				<isset property="qtjambi.force" />
266
			</not>
267
			<uptodate targetfile="${outputDir}/Makefile">
268
				<srcfiles dir="${outputDir}/cpp" includes="**/*.pri"/>
269
				<srcfiles dir="${outputDir}" includes="**/qtjambi_*.pro"/>
270
				<srcfiles dir="${outputDir}/juic" includes="juic.pro"/>
271
				<srcfiles dir="${outputDir}/qtjambi" includes="*.pr*"/>
272
				<srcfiles dir="${outputDir}/designer-integration" includes="**/*.pr*"/>
273
			</uptodate>
274
		</and>
275
	</condition>
276
277
	<condition property="qtjambi.library.cppfiles.uptodate">
278
		<and>
279
			<not>
280
				<isset property="qtjambi.force" />
281
			</not>
282
			<uptodate targetfile="${outputDir}/.compile.timestamp">
283
				<srcfiles dir="${outputDir}/cpp" includes="**/*.cpp"/>
284
				<srcfiles dir="${outputDir}/cpp" includes="**/*.h"/>
285
				<srcfiles dir="${outputDir}/qtjambi" includes="*.cpp"/>
286
				<srcfiles dir="${outputDir}/qtjambi" includes="*.h"/>
287
				<srcfiles dir="${outputDir}/qtjambi_core/" includes="*.cpp"/>
288
				<srcfiles dir="${outputDir}/qtjambi_core/" includes="*.h"/>
289
				<srcfiles dir="${outputDir}/qtjambi_gui/" includes="*.cpp"/>
290
				<srcfiles dir="${outputDir}/qtjambi_gui/" includes="*.h"/>
291
				<srcfiles dir="${outputDir}/qtjambi_designer/" includes="*.cpp"/>
292
				<srcfiles dir="${outputDir}/qtjambi_designer/" includes="*.h"/>
293
				<srcfiles dir="${outputDir}/juic" includes="*.cpp"/>
294
				<srcfiles dir="${outputDir}/juic" includes="*.h"/>
295
				<srcfiles dir="${outputDir}/designer-integration" includes="**/*.cpp"/>
296
				<srcfiles dir="${outputDir}/designer-integration" includes="**/*.h"/>
297
			</uptodate>
298
		</and>
299
	</condition>
300
301
	<target name="library.native.qmake"
302
            depends="init"
303
            description="Runs qmake on the Qt Jambi project."
304
	    unless="qtjambi.library.makefiles.uptodate">
305
		<delete dir="${jambiLib}" />
306
		<qmake recursive="true"
307
               dir="${outputDir}"
308
               pro="${sourceDir}/java.pro"
309
               config="${qtjambi.configuration} ${qtjambi.config.jumptable}"
310
               debugTools="${qtjambi.debug-tools}"/>
311
	</target>
312
313
	<target name="library.native.compile"
314
            depends="init"
315
            description="Compiles the C++ Qt Jambi bindings."
316
	    unless="qtjambi.library.cppfiles.uptodate">
317
		<make dir="${outputDir}"/>
318
		<touch file="${outputDir}/.compile.timestamp"/>
319
	</target>
320
321
	<target name="library.designer.compile" 
322
	    depends="init">
323
		<javac destdir="${outputDir}" target="1.5" debug="true">
324
			<src path="${outputDir}"/>
325
			<src path="${sourceDir}"/>
326
			<include name="com/trolltech/tools/designer/*.java"/>
327
		</javac>
328
	</target>
329
330
	<target name="library.designer.bundle" 
331
	    depends="library.designer.compile" 
332
	    unless="qtjambi.library.cppfiles.uptodate">
333
		<jar destfile="${outputDir}/qtjambi-designer-${qtjambi.version}.jar"
334
             basedir="${outputDir}">
335
			<include name="com/trolltech/tools/designer/*"/>
336
			<exclude name="com/trolltech/tools/designer/*.java"/>
337
			<manifest>
338
				<attribute name="Built-By" value="${user.name} - ${TODAY}"/>
339
			</manifest>
340
		</jar>
341
	</target>
342
343
	<target name="library.native.bundle.osgi">
344
		<!-- The platform filter -->
345
		<condition property="osgi.filter" value="(&amp; (osgi.ws=win32) (osgi.os=win32) (osgi.arch=x86))">
346
			<equals arg1="${qtjambi.osname}" arg2="win32" />
347
		</condition>
348
349
		<condition property="osgi.filter" value="(&amp; (osgi.ws=win64) (osgi.os=win64) (osgi.arch=x86))">
350
			<equals arg1="${qtjambi.osname}" arg2="win64" />
351
		</condition>
352
353
		<condition property="osgi.filter" value="(&amp; (osgi.ws=linux32) (osgi.os=linux32) (osgi.arch=x86))">
354
			<equals arg1="${qtjambi.osname}" arg2="linux32" />
355
		</condition>
356
357
		<condition property="osgi.filter" value="(&amp; (osgi.ws=linux64) (osgi.os=linux64) (osgi.arch=x86))">
358
			<equals arg1="${qtjambi.osname}" arg2="linux64" />
359
		</condition>
360
361
		<condition property="osgi.filter" value="(osgi.os=macosx)">
362
			<equals arg1="${qtjambi.osname}" arg2="macosx" />
363
		</condition>
364
365
		<condition property="osgi.filter" value="(osgi.os=macosx)">
366
			<equals arg1="${qtjambi.osname}" arg2="sunos" />
367
		</condition>
368
369
		<!-- Native libs to inculde -->
370
371
		<condition property="osgi.nativelibs" value="bin/QtCore4.dll;bin/QtGui4.dll;bin/QtXml4.dll;bin/QtSql4.dll;bin/QtSvg4.dll;bin/QtNetwork4.dll;bin/QtOpenGL4.dll;bin/QtWebKit4.dll;bin/QtXmlPatterns4.dll;bin/phonon4.dll;plugins/phonon_backend/phonon_ds94.dll;plugins/imageformats/qjpeg4.dll;plugins/imageformats/qgif4.dll;plugins/imageformats/qmng4.dll;plugins/imageformats/qtiff4.dll;plugins/imageformats/qsvg4.dll;plugins/iconengines/qsvgicon4.dll;plugins/codecs/qcncodecs4.dll;plugins/codecs/qjpcodecs4.dll;plugins/codecs/qkrcodecs4.dll;plugins/codecs/qtwcodecs4.dll;plugins/accessible/qtaccessiblewidgets4.dll;plugins/sqldrivers/qsqlite4.dll;bin/qtjambi.dll;bin/com_trolltech_qt_core.dll;bin/com_trolltech_qt_gui.dll;bin/com_trolltech_qt_xml.dll;bin/com_trolltech_qt_sql.dll;bin/com_trolltech_qt_svg.dll;bin/com_trolltech_qt_network.dll;bin/com_trolltech_qt_opengl.dll;bin/com_trolltech_qt_phonon.dll;bin/com_trolltech_qt_webkit.dll;bin/com_trolltech_qt_xmlpatterns.dll;plugins/imageformats/Microsoft.VC80.CRT/Microsoft.VC80.CRT.manifest;plugins/imageformats/Microsoft.VC80.CRT/msvcm80.dll;plugins/imageformats/Microsoft.VC80.CRT/msvcp80.dll;plugins/imageformats/Microsoft.VC80.CRT/msvcr80.dll;plugins/iconengines/Microsoft.VC80.CRT/Microsoft.VC80.CRT.manifest;plugins/iconengines/Microsoft.VC80.CRT/msvcm80.dll;plugins/iconengines/Microsoft.VC80.CRT/msvcp80.dll;plugins/iconengines/Microsoft.VC80.CRT/msvcr80.dll;plugins/codecs/Microsoft.VC80.CRT/Microsoft.VC80.CRT.manifest;plugins/codecs/Microsoft.VC80.CRT/msvcm80.dll;plugins/codecs/Microsoft.VC80.CRT/msvcp80.dll;plugins/codecs/Microsoft.VC80.CRT/msvcr80.dll;plugins/phonon_backend/Microsoft.VC80.CRT/Microsoft.VC80.CRT.manifest;plugins/phonon_backend/Microsoft.VC80.CRT/msvcm80.dll;plugins/phonon_backend/Microsoft.VC80.CRT/msvcp80.dll;plugins/phonon_backend/Microsoft.VC80.CRT/msvcr80.dll;bin/Microsoft.VC80.CRT/Microsoft.VC80.CRT.manifest;bin/Microsoft.VC80.CRT/msvcm80.dll;bin/Microsoft.VC80.CRT/msvcp80.dll;bin/Microsoft.VC80.CRT/msvcr80.dll;plugins/accessible/Microsoft.VC80.CRT/Microsoft.VC80.CRT.manifest;plugins/accessible/Microsoft.VC80.CRT/msvcm80.dll;plugins/accessible/Microsoft.VC80.CRT/msvcp80.dll;plugins/accessible/Microsoft.VC80.CRT/msvcr80.dll;plugins/sqldrivers/Microsoft.VC80.CRT/Microsoft.VC80.CRT.manifest;plugins/sqldrivers/Microsoft.VC80.CRT/msvcm80.dll;plugins/sqldrivers/Microsoft.VC80.CRT/msvcp80.dll;plugins/sqldrivers/Microsoft.VC80.CRT/msvcr80.dll">
372
			<equals arg1="${qtjambi.osname}" arg2="win32" />
373
		</condition>
374
375
		<condition property="osgi.nativelibs" value="">
376
			<equals arg1="${qtjambi.osname}" arg2="win64" />
377
		</condition>
378
379
		<condition property="osgi.nativelibs" value="">
380
			<equals arg1="${qtjambi.osname}" arg2="linux32" />
381
		</condition>
382
383
		<condition property="osgi.nativelibs" value="">
384
			<equals arg1="${qtjambi.osname}" arg2="linux64" />
385
		</condition>
386
387
		<condition property="osgi.nativelibs" value="lib/libQtCore.4.dylib;lib/libQtGui.4.dylib;lib/libQtNetwork.4.dylib;lib/libQtOpenGL.4.dylib;lib/libQtSql.4.dylib;lib/libQtSvg.4.dylib;lib/libQtWebKit.4.dylib;lib/libQtXml.4.dylib;lib/libQtXmlPatterns.4.dylib;lib/libcom_trolltech_qt_core.jnilib;lib/libcom_trolltech_qt_gui.jnilib;lib/libcom_trolltech_qt_network.jnilib;lib/libcom_trolltech_qt_opengl.jnilib;lib/libcom_trolltech_qt_phonon.jnilib;lib/libcom_trolltech_qt_sql.jnilib;lib/libcom_trolltech_qt_svg.jnilib;lib/libcom_trolltech_qt_webkit.jnilib;lib/libcom_trolltech_qt_xml.jnilib;lib/libcom_trolltech_qt_xmlpatterns.jnilib;lib/libphonon.4.dylib;lib/libqtjambi.jnilib;plugins/accessible/libqtaccessiblewidgets.dylib;plugins/codecs/libqcncodecs.dylib;plugins/codecs/libqjpcodecs.dylib;plugins/codecs/libqkrcodecs.dylib;plugins/codecs/libqtwcodecs.dylib;plugins/iconengines/libqsvgicon.dylib;plugins/imageformats/libqgif.dylib;plugins/imageformats/libqjpeg.dylib;plugins/imageformats/libqmng.dylib;plugins/imageformats/libqsvg.dylib;plugins/imageformats/libqtiff.dylib;plugins/phonon_backend/libphonon_qt7.dylib;plugins/sqldrivers/libqsqlite.dylib">
388
			<equals arg1="${qtjambi.osname}" arg2="macosx" />
389
		</condition>
390
391
		<condition property="osgi.nativelibs" value="">
392
			<equals arg1="${qtjambi.osname}" arg2="sunos" />
393
		</condition>
394
395
	</target>
396
397
	<target name="library.native.bundle"
398
            depends="init, library.native.bundle.osgi"
399
            description="Creates a .jar file file containing native libraries."
400
	    unless="qtjambi.library.cppfiles.uptodate">
401
402
		<qtjambi-platform-jar cacheKey="${qtjambi.compiler}-${DSTAMP}-${TSTAMP}"
403
                              outdir="${outputDir}/platform-output">
404
405
			<!-- Qt Libraries... -->
406
			<library name="QtCore"    type="qt" rootPath="${qtjambi.qtdir}" />
407
			<library name="QtGui"     type="qt" rootPath="${qtjambi.qtdir}" />
408
			<library name="QtXml"     type="qt" rootPath="${qtjambi.qtdir}" />
409
			<library name="QtSql"     type="qt" rootPath="${qtjambi.qtdir}" />
410
			<library name="QtSvg"     type="qt" rootPath="${qtjambi.qtdir}" load="yes" />
411
			<library name="QtNetwork" type="qt" rootPath="${qtjambi.qtdir}" />
412
			<library name="QtOpenGL"  type="qt" rootPath="${qtjambi.qtdir}" if="${qtjambi.opengl}"/>
413
			<library name="QtWebKit" type="qt" rootPath="${qtjambi.qtdir}" if="${qtjambi.webkit}" />
414
			<library name="QtXmlPatterns" type="qt" rootPath="${qtjambi.qtdir}" if="${qtjambi.xmlpatterns}" />
415
			<library name="phonon" type="qt" rootPath="${qtjambi.qtdir}" if="${qtjambi.phonon}" />
416
			<library name="QtDBus" type="qt" rootPath="${qtjambi.qtdir}" if="${qtjambi.dbus}" />
417
			<library name="phonon_ds9" type="plugin" rootPath="${qtjambi.qtdir}" subdir="plugins/phonon_backend" load="never" if="${qtjambi.phonon_ds9}" />
418
			<library name="phonon_gstreamer" type="plugin" rootPath="${qtjambi.qtdir}" subdir="plugins/phonon_backend" load="never" if="${qtjambi.phonon_gstreamer}" />
419
			<library name="phonon_qt7" type="plugin" rootPath="${qtjambi.qtdir}" subdir="plugins/phonon_backend" load="never" if="${qtjambi.phonon_qt7}" />
420
421
			<!-- Qt Plugins... -->
422
			<library name="qjpeg" type="plugin" rootPath="${qtjambi.qtdir}" subdir="plugins/imageformats" load="never" />
423
			<library name="qgif" type="plugin" rootPath="${qtjambi.qtdir}" subdir="plugins/imageformats" load="never"/>
424
			<library name="qmng" type="plugin" rootPath="${qtjambi.qtdir}" subdir="plugins/imageformats" load="never"/>
425
			<library name="qtiff" type="plugin" rootPath="${qtjambi.qtdir}" subdir="plugins/imageformats" load="never"/>
426
			<library name="qsvg" type="plugin" rootPath="${qtjambi.qtdir}" subdir="plugins/imageformats" load="never"/>
427
			<library name="qsvgicon" type="plugin" rootPath="${qtjambi.qtdir}" subdir="plugins/iconengines" load="never"/>
428
			<library name="qcncodecs" type="plugin" rootPath="${qtjambi.qtdir}" subdir="plugins/codecs" load="never" />
429
			<library name="qjpcodecs" type="plugin" rootPath="${qtjambi.qtdir}" subdir="plugins/codecs" load="never" />
430
			<library name="qkrcodecs" type="plugin" rootPath="${qtjambi.qtdir}" subdir="plugins/codecs" load="never" />
431
			<library name="qtwcodecs" type="plugin" rootPath="${qtjambi.qtdir}" subdir="plugins/codecs" load="never" />
432
			<library name="qtaccessiblewidgets" type="plugin" rootPath="${qtjambi.qtdir}" subdir="plugins/accessible" load="never"/>
433
			<library name="qsqlite" type="plugin" rootPath="${qtjambi.qtdir}" subdir="plugins/sqldrivers" load="never" if="${qtjambi.sqlite}" />
434
435
			<!-- Qt Jambi Libraries -->
436
			<library name="qtjambi"                  type="qtjambi" rootPath="${outputDir}" />
437
			<library name="com_trolltech_qt_core"    type="qtjambi" rootPath="${outputDir}" />
438
			<library name="com_trolltech_qt_gui"     type="qtjambi" rootPath="${outputDir}" />
439
			<library name="com_trolltech_qt_xml"     type="qtjambi" rootPath="${outputDir}" />
440
			<library name="com_trolltech_qt_sql"     type="qtjambi" rootPath="${outputDir}" />
441
			<library name="com_trolltech_qt_svg"     type="qtjambi" rootPath="${outputDir}" />
442
			<library name="com_trolltech_qt_network" type="qtjambi" rootPath="${outputDir}" />
443
			<library name="com_trolltech_qt_opengl"  type="qtjambi" rootPath="${outputDir}" />
444
			<library name="com_trolltech_qt_phonon"  type="qtjambi" rootPath="${outputDir}" if="${qtjambi.phonon}"/>
445
			<library name="com_trolltech_qt_webkit"  type="qtjambi" rootPath="${outputDir}" if="${qtjambi.webkit}"/>
446
			<library name="com_trolltech_qt_xmlpatterns"  type="qtjambi" rootPath="${outputDir}" if="${qtjambi.xmlpatterns}"/>
447
448
			<plugin path="plugins" />
449
450
		</qtjambi-platform-jar>
451
452
		<jar destfile="${outputDir}/qtjambi-${qtjambi.osname}-${qtjambi.compiler}-${qtjambi.version}.jar">
453
			<fileset dir="${outputDir}/platform-output" />
454
455
			<manifest>
456
				<attribute name="Built-By" value="${user.name} - ${TODAY}"/>
457
				<attribute name="Bundle-ManifestVersion" value="2" />
458
				<attribute name="Bundle-Name" value="QT Jambi"/>
459
				<attribute name="Bundle-SymbolicName" value="com.trolltech.qt.jambi.osx"/>
460
				<attribute name="Bundle-Version" value="${qtjambi.osgi.version}"/>
461
				<attribute name="Bundle-ActivationPolicy" value="lazy"/>
462
				<attribute name="Bundle-RequiredExecutionEnvironment" value="J2SE-1.5"/>
463
				<attribute name="Fragment-Host" value="com.trolltech.qt.jambi"/>
464
				<attribute name="Eclipse-PlatformFilter" value="${osgi.filter}"/>
465
				<attribute name="Bundle-NativeCode" value="${osgi.nativelibs}"/>
466
			</manifest>
467
		</jar>
468
469
		<delete dir="${outputDir}/platform-output"/>
470
	</target>
471
472
473
474
	<!-- 
475
	 ************************************************************
476
	 Building and running the Generator...
477
	 ************************************************************
478
      -->
479
	<condition property="qtjambi.generator_pro.uptodate">
480
		<and>
481
			<not>
482
				<isset property="qtjambi.force" />
483
			</not>
484
			<uptodate targetfile="${outputDir}/generator/Makefile">
485
				<srcfiles dir="${sourceDir}/generator" includes="generator.pr*"/>
486
				<srcfiles dir="${sourceDir}/generator/parser" includes="rxx.pr*"/>
487
				<srcfiles dir="${sourceDir}/generator/parser/rpp" includes="rpp.pri"/>
488
			</uptodate>
489
		</and>
490
	</condition>
491
492
	<target name="generator.qmake"
493
            depends="init, generator.xmlmerge"
494
            description="Runs qmake on the generator project." 
495
	    unless="qtjambi.generator_pro.uptodate">
496
		<mkdir dir="${outputDir}/generator"/>
497
		<qmake config="${qtjambi.configuration}"
498
             dir="${outputDir}/generator"
499
             pro="${sourceDir}/generator/generator.pro"
500
             debugTools="${qtjambi.debug-tools}"/>
501
	</target>
502
503
	<condition property="qtjambi.generator_compile.uptodate">
504
		<and>
505
			<not>
506
				<isset property="qtjambi.force" />
507
			</not>
508
			<uptodate targetfile="${outputDir}/generator/.compile.timestamp">
509
				<srcfiles dir="${sourceDir}/generator" includes="**/*.cpp"/>
510
				<srcfiles dir="${sourceDir}/generator" includes="**/*.h"/>
511
				<srcfiles dir="${sourceDir}/generator" includes="Makefile"/>
512
				<srcfiles dir="${sourceDir}/generator" includes="*.qrc"/>
513
				<srcfiles dir="${sourceDir}/generator" includes="*.txt"/>
514
				<srcfiles dir="${sourceDir}/generator" includes="*.xml"/>
515
			</uptodate>
516
		</and>
517
	</condition>
518
519
	<target name="generator.compile"
520
            depends="init, generator.qmake"
521
            description="Compiles the Qt Jambi generator."
522
	    unless="qtjambi.generator_compile.uptodate">
523
		<make dir="${outputDir}/generator" />
524
		<touch file="${outputDir}/generator/.compile.timestamp"/>
525
	</target>
526
527
	<target name="generator.run"
528
            depends="init, generator.compile"
529
            description="Runs the Qt Jambi generator on the Qt sources, using the Qt version found at the QTDIR variable."
530
	    unless="qtjambi.generator_compile.uptodate">
531
		<generator dir="${outputDir}/generator"
532
                   outputDirectory="${outputDir}"
533
                   typesystem="${sourceDir}/generator/build_all.txt"
534
                   header="${sourceDir}/generator/qtjambi_masterinclude.h"
535
           options="${qtjambi.generator.jumptable}"/>
536
		<touch file="${outputDir}/generator/.run.timestamp"/>
537
	</target>
538
539
540
541
	<!-- 
542
	 ************************************************************
543
	 XML Merging for the generator... 
544
	 ************************************************************
545
      -->
546
	<condition property="qtjambi.typesystem_core.uptodate">
547
		<and>
548
			<not>
549
				<isset property="qtjambi.force" />
550
			</not>
551
			<uptodate targetfile="${outputDir}/generator/typesystem_core.xml">
552
				<srcfiles dir="${sourceDir}/generator" includes="typesystem_core-*.*"/>
553
			</uptodate>
554
		</and>
555
	</condition>
556
557
	<target name="generator.xmlmerge.core" unless="qtjambi.typesystem_core.uptodate">
558
		<xslt in="${sourceDir}/generator/typesystem_core-common.xml"
559
              out="${outputDir}/generator/typesystem_core.xml"
560
              style="${sourceDir}/generator/merge.xsl"
561
              force="yes">
562
			<param name="source"
563
                   expression="typesystem_core-java.xml"/>
564
		</xslt>
565
	</target>
566
567
568
	<condition property="qtjambi.typesystem_gui.uptodate">
569
		<and>
570
			<not>
571
				<isset property="qtjambi.force" />
572
			</not>
573
			<uptodate targetfile="${outputDir}/generator/typesystem_gui.xml">
574
				<srcfiles dir="${sourceDir}/generator" includes="typesystem_gui-*.*"/>
575
			</uptodate>
576
		</and>
577
	</condition>
578
579
	<target name="generator.xmlmerge.gui" unless="qtjambi.typesystem_gui.uptodate">
580
		<xslt in="${sourceDir}/generator/typesystem_gui-common.xml"
581
              out="${outputDir}/generator/typesystem_gui.xml"
582
              style="${sourceDir}/generator/merge.xsl"
583
              force="yes">
584
			<param name="source"
585
                   expression="typesystem_gui-java.xml"/>
586
		</xslt>
587
	</target>
588
589
	<condition property="qtjambi.typesystem_xml.uptodate">
590
		<and>
591
			<not>
592
				<isset property="qtjambi.force" />
593
			</not>
594
			<uptodate targetfile="${outputDir}/generator/typesystem_xml.xml">
595
				<srcfiles dir="${sourceDir}/generator" includes="typesystem_xml-*.*"/>
596
			</uptodate>
597
		</and>
598
	</condition>
599
600
	<target name="generator.xmlmerge.xml" unless="qtjambi.typesystem_xml.uptodate">
601
		<xslt in="${sourceDir}/generator/typesystem_xml-common.xml"
602
              out="${outputDir}/generator/typesystem_xml.xml"
603
              style="${sourceDir}/generator/merge.xsl"
604
              force="yes">
605
			<param name="source"
606
                   expression="typesystem_xml-java.xml"/>
607
		</xslt>
608
	</target>
609
610
	<condition property="qtjambi.typesystem_network.uptodate">
611
		<and>
612
			<not>
613
				<isset property="qtjambi.force" />
614
			</not>
615
			<uptodate targetfile="${outputDir}/generator/typesystem_network.xml">
616
				<srcfiles dir="${sourceDir}/generator" includes="typesystem_network-*.*"/>
617
			</uptodate>
618
		</and>
619
	</condition>
620
621
	<target name="generator.xmlmerge.network" unless="qtjambi.typesystem_network.uptodate">
622
		<xslt in="${sourceDir}/generator/typesystem_network-common.xml"
623
              out="${outputDir}/generator/typesystem_network.xml"
624
              style="${sourceDir}/generator/merge.xsl"
625
              force="yes">
626
			<param name="source"
627
                   expression="typesystem_network-java.xml"/>
628
		</xslt>
629
	</target>
630
631
	<condition property="qtjambi.typesystem_opengl.uptodate">
632
		<and>
633
			<not>
634
				<isset property="qtjambi.force" />
635
			</not>
636
			<uptodate targetfile="${outputDir}/generator/typesystem_opengl.xml">
637
				<srcfiles dir="${sourceDir}/generator" includes="typesystem_opengl-*.*"/>
638
			</uptodate>
639
		</and>
640
	</condition>
641
642
	<target name="generator.xmlmerge.opengl" unless="qtjambi.typesystem_opengl.uptodate">
643
		<xslt in="generator/typesystem_opengl-common.xml"
644
              out="${outputDir}/generator/typesystem_opengl.xml"
645
              style="${sourceDir}/generator/merge.xsl"
646
              force="yes">
647
			<param name="source"
648
                   expression="typesystem_opengl-java.xml"/>
649
		</xslt>
650
	</target>
651
652
	<condition property="qtjambi.typesystem_sql.uptodate">
653
		<and>
654
			<not>
655
				<isset property="qtjambi.force" />
656
			</not>
657
			<uptodate targetfile="${outputDir}/generator/typesystem_sql.xml">
658
				<srcfiles dir="${sourceDir}/generator" includes="typesystem_sql-*.*"/>
659
			</uptodate>
660
		</and>
661
	</condition>
662
663
	<target name="generator.xmlmerge.sql" unless="qtjambi.typesystem_sql.uptodate">
664
		<xslt in="${sourceDir}/generator/typesystem_sql-common.xml"
665
              out="${outputDir}/generator/typesystem_sql.xml"
666
              style="${sourceDir}/generator/merge.xsl"
667
              force="yes">
668
			<param name="source"
669
                   expression="typesystem_sql-java.xml"/>
670
		</xslt>
671
	</target>
672
673
	<condition property="qtjambi.typesystem_svg.uptodate">
674
		<and>
675
			<not>
676
				<isset property="qtjambi.force" />
677
			</not>
678
			<uptodate targetfile="${outputDir}/generator/typesystem_svg.xml">
679
				<srcfiles dir="${sourceDir}/generator" includes="typesystem_svg-*.*"/>
680
			</uptodate>
681
		</and>
682
	</condition>
683
684
	<target name="generator.xmlmerge.svg" unless="qtjambi.typesystem_svg.uptodate">
685
		<xslt in="${sourceDir}/generator/typesystem_svg-common.xml"
686
              out="${outputDir}/generator/typesystem_svg.xml"
687
              style="${sourceDir}/generator/merge.xsl"
688
              force="yes">
689
			<param name="source"
690
                   expression="typesystem_svg-java.xml"/>
691
		</xslt>
692
	</target>
693
694
	<condition property="qtjambi.typesystem_webkit.uptodate">
695
		<and>
696
			<not>
697
				<isset property="qtjambi.force" />
698
			</not>
699
			<uptodate targetfile="${outputDir}/generator/typesystem_webkit.xml">
700
				<srcfiles dir="${sourceDir}/generator" includes="typesystem_webkit-*.*"/>
701
			</uptodate>
702
		</and>
703
	</condition>
704
705
	<target name="generator.xmlmerge.webkit" unless="qtjambi.typesystem_webkit.uptodate">
706
		<xslt in="${sourceDir}/generator/typesystem_webkit-common.xml"
707
              out="${outputDir}/generator/typesystem_webkit.xml"
708
              style="${sourceDir}/generator/merge.xsl"
709
              force="yes">
710
			<param name="source"
711
                   expression="typesystem_webkit-java.xml"/>
712
		</xslt>
713
	</target>
714
715
	<condition property="qtjambi.typesystem_phonon.uptodate">
716
		<and>
717
			<not>
718
				<isset property="qtjambi.force" />
719
			</not>
720
			<uptodate targetfile="${outputDir}/generator/typesystem_phonon.xml">
721
				<srcfiles dir="${sourceDir}/generator" includes="typesystem_phonon-*.*"/>
722
			</uptodate>
723
		</and>
724
	</condition>
725
726
	<target name="generator.xmlmerge.phonon" unless="qtjambi.typesystem_phonon.uptodate">
727
		<xslt in="${sourceDir}/generator/typesystem_phonon-common.xml"
728
              out="${outputDir}/generator/typesystem_phonon.xml"
729
              style="${sourceDir}/generator/merge.xsl"
730
              force="yes">
731
			<param name="source"
732
                   expression="typesystem_phonon-java.xml"/>
733
		</xslt>
734
	</target>
735
736
	<condition property="qtjambi.typesystem_xmlpatterns.uptodate">
737
		<and>
738
			<not>
739
				<isset property="qtjambi.force" />
740
			</not>
741
			<uptodate targetfile="${outputDir}/generator/typesystem_xmlpatterns.xml">
742
				<srcfiles dir="${sourceDir}/generator" includes="typesystem_xmlpatterns-*.*"/>
743
			</uptodate>
744
		</and>
745
	</condition>
746
747
	<target name="generator.xmlmerge.xmlpatterns" unless="qtjambi.typesystem_xmlpatterns.uptodate">
748
		<xslt in="${sourceDir}/generator/typesystem_xmlpatterns-common.xml"
749
              out="${outputDir}/generator/typesystem_xmlpatterns.xml"
750
              style="${sourceDir}/generator/merge.xsl"
751
              force="yes">
752
			<param name="source"
753
                   expression="typesystem_xmlpatterns-java.xml"/>
754
		</xslt>
755
	</target>
756
757
	<condition property="qtjambi.typesystem_designer.uptodate">
758
		<and>
759
			<not>
760
				<isset property="qtjambi.force" />
761
			</not>
762
			<uptodate targetfile="${outputDir}/generator/typesystem_designer.xml">
763
				<srcfiles dir="${sourceDir}/generator" includes="typesystem_designer-*.*"/>
764
			</uptodate>
765
		</and>
766
	</condition>
767
768
	<target name="generator.xmlmerge.designer" unless="qtjambi.typesystem_designer.uptodate">
769
		<xslt in="${sourceDir}/generator/typesystem_designer-common.xml"
770
              out="${outputDir}/generator/typesystem_designer.xml"
771
              style="${sourceDir}/generator/merge.xsl"
772
              force="yes">
773
			<param name="source"
774
                   expression="typesystem_designer-java.xml"/>
775
		</xslt>
776
	</target>
777
778
779
	<target name="generator.xmlmerge"
780
	    depends="generator.xmlmerge.core, generator.xmlmerge.gui, generator.xmlmerge.network, generator.xmlmerge.svg, generator.xmlmerge.xml, generator.xmlmerge.xmlpatterns, generator.xmlmerge.opengl, generator.xmlmerge.sql, generator.xmlmerge.designer, generator.xmlmerge.webkit, generator.xmlmerge.phonon"
781
	    description="Merges the XML files used by the Qt Jambi generator.">
782
	</target>
783
784
	<target name="init"
785
        depends="init.ant, init.taskdef"
786
        description="Initializes the Qt Jambi build environment." >
787
		<qtjambi-initialize verbose="true" configuration="${qtjambi.config}" />
788
	</target>
789
790
	<target name="generator"
791
        depends="init, generator.xmlmerge, generator.qmake, generator.compile, generator.run"
792
        description="Compiles and runs the Qt Jambi Generator."/>
793
794
	<target name="library.native"
795
        depends="library.native.qmake, library.native.compile, library.native.bundle"
796
        description="Compiles and bundles the Qt Jambi native libraries."/>
797
798
	<target name="library.java"
799
        depends="library.java.compile, library.java.bundle"
800
        description="Compiles and bundles the Qt Jambi java libraries."/>
801
802
	<target name="library.designer"
803
        depends="library.designer.compile, library.designer.bundle"
804
        description="Compiles and bundles the Qt Jambi designer libraries."/>
805
806
	<target name="library"
807
        depends="init, library.native, library.java, library.designer"
808
        description="Compiles and bundles the Qt Jambi libraries."/>
809
810
	<target name="examples"
811
        depends="init, examples.juic, examples.bundle"
812
        description="Compiles and bundles the Qt Jambi examples."/>
813
814
	<target name="all"
815
            description="Generates, builds and bundles the Qt Jambi libraries."
816
            depends="init, generator, library, examples" />
817
</project>