1
<?xml version="1.0" encoding="UTF-8"?>
3
- Ant build for GlueGen and corresponding ANT tasks. Also builds
4
- JOGL-specific BuildStaticGLInfo and its corresponding ANT task.
6
- This build has been tested with ANT 1.6.2 and ANTLR 2.7.4.
9
- all: clean and build GlueGen and GlueGen Ant task
10
- clean: clean all built
12
<project name="GlueGen" basedir="." default="all">
14
<fail message="Please build using Ant 1.8.0 or higher.">
17
<antversion atleast="1.8.0"/>
22
<import file="gluegen-cpptasks.xml" />
24
<condition property="rootrel.build" value="build">
26
<isset property="rootrel.build"/>
30
<target name="setup-excludes-1" if="gluegen.nsig">
31
<property name="gluegen.excludes" value="" />
34
<target name="setup-excludes-2" unless="gluegen.nsig">
35
<property name="gluegen.excludes" value="com/jogamp/gluegen/runtime/BufferFactoryInternal.java,com/jogamp/gluegen/nativesig/**" />
38
<target name="init" depends="gluegen.properties.load.user,gluegen.cpptasks.detect.os,setup-excludes-1,setup-excludes-2">
39
<!-- Declare all paths and user defined variables. -->
41
<property name="javac.bootclasspath-cdc.jar" value="lib/cdc_fp.jar" />
43
<!--property name="javadoc.link" value="http://download.oracle.com/javase/1.4.2/docs/api/"/-->
44
<property name="javadoc.link" value="http://java.sun.com/j2se/1.4.2/docs/api/" />
46
<!-- The source and build directories. -->
47
<property name="project.root" value=".." />
48
<property name="src.java" value="${project.root}/src/java" />
49
<property name="build" location="${project.root}/${rootrel.build}" />
50
<property name="javadoc.root.path" location="${build}/javadoc" />
51
<property name="javadoc.gluegen.path" location="${javadoc.root.path}/gluegen/javadoc" />
52
<property name="gluegen.lib.dir" value="${build}/obj"/>
55
<format property="version.timestamp" pattern="yyyyMMdd"/>
58
<property file="${build}/artifact.properties"/>
59
<property name="gluegen.build.number" value="manual"/>
60
<property name="gluegen.build.id" value="${version.timestamp}"/>
61
<property name="gluegen.build.branch" value="master"/>
62
<property name="gluegen.build.commit" value="manual"/>
64
<!-- This is the version of GlueGen you are building -->
65
<property name="gluegen_base_version" value="2.0"/>
66
<property name="gluegen.version" value="${gluegen_base_version}-b${gluegen.build.number}-${version.timestamp}" />
68
<!-- The generated source directories. -->
69
<property name="src.generated" value="${build}/gensrc" />
70
<property name="src.generated.java" value="${src.generated}/java" />
71
<property name="src.generated.java-cdc" value="${src.generated}/java-cdc" />
73
<!-- The compiler output directories. -->
74
<property name="classes" value="${build}/classes" />
75
<property name="classes-cdc" value="${build}/classes-cdc" />
77
<!-- Call the external config validator script to make sure the config is ok and consistent -->
78
<ant antfile="validate-properties.xml" inheritall="true"/>
80
<!-- Create the required output directories. -->
81
<mkdir dir="${src.generated.java}" />
82
<mkdir dir="${src.generated.java-cdc}" />
83
<mkdir dir="${classes}" />
84
<mkdir dir="${classes-cdc}" />
86
<!-- Create the classpath for ANTLR. This requires the user-defined
87
- "antlr.jar" property. -->
88
<path id="antlr.classpath">
89
<pathelement location="${antlr.jar}" />
92
<!-- The location of the GlueGen source and the C grammar files. -->
93
<property name="gluegen" value="${src.java}/com/jogamp/gluegen" />
94
<property name="c.grammar" value="${gluegen}/cgram" />
95
<property name="j.grammar" value="${gluegen}/jgram" />
97
<!-- The resulting location of the generated Java files from the
98
- C grammar via ANTLR. -->
99
<property name="gluegen.build" value="${src.generated.java}/com/jogamp/gluegen" />
100
<property name="generated.java.from.c.grammar" value="${gluegen.build}/cgram" />
101
<property name="generated.java.from.j.grammar" value="${gluegen.build}/jgram" />
103
<property name="tools.jar" value="${java.home}/../lib/tools.jar"/>
105
<property name="archive.name" value="gluegen-${gluegen.version}-${os.and.arch}" />
106
<property name="archive" value="${build}/${archive.name}" />
111
- Using ANTLR generate the specified Java files.
113
- @param target the grammar file to process
114
- @param output.dir the directory to write the generated files to. If
115
- the directory does not exist, it will be created.
117
<target name="generate.grammar">
118
<!-- Generate the Java files -->
119
<antlr target="${output.dir}/${target}" outputdirectory="${output.dir}">
120
<classpath refid="antlr.classpath" />
125
- Using ANTLR generate the specified Java files with an overridden
128
- @param target the grammar file to process
129
- @param glib the overridding grammar file
130
- @param output.dir the directory to write the generated files to. If
131
- the directory does not exist, it will be created.
133
<target name="generate.c.grammar.glib">
134
<!-- Generate the Java files -->
135
<antlr target="${output.dir}/${target}" glib="${output.dir}/${glib}" outputdirectory="${output.dir}">
136
<classpath refid="antlr.classpath" />
140
<!-- Use GlueGen to generate the source code for the NativeLibrary
141
implementation. Note that to make the build process simpler (in
142
particular, the nightly builds) we do not do this every time we
143
run the build, but instead check in the generated sources to
146
<property name="gluegen.root" value="../" />
147
<target name="generate.nativelibrary.sources" depends="init" >
148
<!-- Define the appropriate include paths -->
149
<dirset id="stub.includes.fileset.windows" dir=".">
150
<include name="stub_includes/windows/**" />
152
<dirset id="stub.includes.fileset.unix" dir=".">
153
<include name="stub_includes/unix/**" />
155
<dirset id="stub.includes.fileset.macosx" dir=".">
156
<include name="stub_includes/macosx/**" />
158
<!-- Define the classpath we should use -->
159
<path id="gluegen.classpath" >
160
<pathelement location="${classes}" />
161
<pathelement location="${antlr.jar}" />
163
<!-- Define the GlueGen task we just built -->
164
<taskdef name="gluegen" classname="com.jogamp.gluegen.ant.GlueGenTask"
165
classpathref="gluegen.classpath" />
167
<!-- Execute it against all of the OSs' header files -->
168
<gluegen src="stub_includes/windows/dynamic-linker.h"
169
config="dynlink-windows.cfg"
170
includeRefId="stub.includes.fileset.windows"
171
emitter="com.jogamp.gluegen.JavaEmitter"
174
<classpath refid="gluegen.classpath" />
176
<gluegen src="stub_includes/unix/dynamic-linker.h"
177
config="dynlink-unix.cfg"
178
includeRefId="stub.includes.fileset.unix"
179
emitter="com.jogamp.gluegen.JavaEmitter"
182
<classpath refid="gluegen.classpath" />
184
<gluegen src="stub_includes/macosx/dynamic-linker.h"
185
config="dynlink-macosx.cfg"
186
includeRefId="stub.includes.fileset.macosx"
187
emitter="com.jogamp.gluegen.JavaEmitter"
190
<classpath refid="gluegen.classpath" />
194
<!-- ================================================================== -->
196
- Set up java.home.dir appropriately on all platforms.
198
<target name="setup.java.home.dir.nonmacosx" depends="gluegen.properties.load.user" unless="isOSX">
199
<!-- java home dir is up one directory as java.home points to '<java-install-dir>/jre' -->
200
<property name="java.home.dir" value="${java.home}/.." />
202
<target name="setup.java.home.dir.macosx" depends="gluegen.properties.load.user" if="isOSX">
203
<property name="java.home.dir" value="/System/Library/Frameworks/JavaVM.framework/Home" />
205
<target name="setup.java.home.dir" depends="setup.java.home.dir.nonmacosx,setup.java.home.dir.macosx" >
206
<property name="java.includes.dir" value="${java.home.dir}/include" />
209
<!-- ================================================================== -->
211
- Compile the native C code for GlueGen's dynamic linker interface.
214
<target name="declare.win32.vc6" if="isVC6">
215
<echo message="Win32.VC6" />
216
<property name="compiler.cfg.id" value="compiler.cfg.win32.msvc" />
217
<property name="linker.cfg.id" value="linker.cfg.win32.msvc" />
220
<target name="declare.win32.vc7" if="isVC7">
221
<echo message="Win32.VC7" />
222
<property name="compiler.cfg.id" value="compiler.cfg.win32.msvc" />
223
<property name="linker.cfg.id" value="linker.cfg.win32.msvc" />
226
<target name="declare.win32.vc8" if="isVC8">
227
<echo message="Win32.VC8" />
228
<property name="compiler.cfg.id" value="compiler.cfg.win32.msvc" />
229
<property name="linker.cfg.id" value="linker.cfg.win32.msvc" />
232
<target name="declare.win32.vc8_x64" if="isVC8_X64">
233
<echo message="Win32.VC8_X64" />
234
<property name="compiler.cfg.id" value="compiler.cfg.win32.msvc" />
235
<property name="linker.cfg.id" value="linker.cfg.win32.msvc" />
238
<target name="declare.win32.vc9" if="isVC9">
239
<echo message="Win32.VC9" />
240
<property name="compiler.cfg.id" value="compiler.cfg.win32.msvc" />
241
<property name="linker.cfg.id" value="linker.cfg.win32.msvc" />
244
<target name="declare.win32.mingw" if="isMingW32">
245
<echo message="Win32.MingW" />
246
<property name="compiler.cfg.id" value="compiler.cfg.win32.mingw" />
247
<property name="linker.cfg.id" value="linker.cfg.win32.mingw" />
250
<target name="declare.win64.mingw" if="isMingW64">
251
<echo message="Win64.MingW" />
252
<property name="compiler.cfg.id" value="compiler.cfg.win64.mingw" />
253
<property name="linker.cfg.id" value="linker.cfg.win64.mingw" />
256
<target name="declare.win32" depends="declare.win32.vc6,declare.win32.vc7,declare.win32.vc8,declare.win32.vc8_x64,declare.win32.vc9,declare.win32.mingw,declare.win64.mingw" if="isWindows" >
257
<property name="c.src.dir.os" value="windows" />
258
<property name="java.includes.dir.platform" value="${java.includes.dir}/win32" />
261
<target name="declare.linux.x86" if="isLinuxX86">
262
<echo message="Linux.x86" />
263
<property name="compiler.cfg.id" value="compiler.cfg.linux" />
264
<property name="linker.cfg.id" value="linker.cfg.linux" />
267
<target name="declare.linux.amd64" if="isLinuxAMD64">
268
<echo message="Linux.AMD64" />
269
<property name="compiler.cfg.id" value="compiler.cfg.linux.amd64" />
270
<property name="linker.cfg.id" value="linker.cfg.linux.amd64" />
273
<target name="declare.linux.ia64" if="isLinuxIA64">
274
<echo message="Linux.IA64" />
275
<property name="compiler.cfg.id" value="compiler.cfg.linux" />
276
<property name="linker.cfg.id" value="linker.cfg.linux" />
279
<target name="declare.linux" depends="declare.linux.x86,declare.linux.amd64,declare.linux.ia64" if="isLinux" >
280
<property name="c.src.dir.os" value="unix" />
281
<property name="java.includes.dir.platform" value="${java.includes.dir}/linux" />
284
<target name="declare.solaris32" if="isSolaris32Bit">
285
<echo message="Solaris" />
286
<property name="compiler.cfg.id" value="compiler.cfg.solaris" />
287
<property name="linker.cfg.id" value="linker.cfg.solaris" />
290
<target name="declare.solarisSparcv9" if="isSolarisSparcv9">
291
<echo message="SolarisSparcv9" />
292
<property name="compiler.cfg.id" value="compiler.cfg.solaris.sparcv9" />
293
<property name="linker.cfg.id" value="linker.cfg.solaris.sparcv9" />
296
<target name="declare.solarisAMD64" if="isSolarisAMD64">
297
<echo message="SolarisAMD64" />
298
<property name="compiler.cfg.id" value="compiler.cfg.solaris.amd64" />
299
<property name="linker.cfg.id" value="linker.cfg.solaris.amd64" />
302
<target name="declare.solaris" depends="declare.solaris32,declare.solarisSparcv9,declare.solarisAMD64" if="isSolaris" >
303
<property name="c.src.dir.os" value="unix" />
304
<property name="java.includes.dir.platform" value="${java.includes.dir}/solaris" />
307
<target name="declare.macosx" if="isOSX">
308
<echo message="MacOSX" />
309
<property name="compiler.cfg.id" value="compiler.cfg.macosx" />
310
<property name="linker.cfg.id" value="linker.cfg.macosx" />
311
<property name="c.src.dir.os" value="macosx" />
312
<property name="java.includes.dir.platform" value="/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Headers" />
315
<target name="declare.freebsd.amd64" if="isFreeBSDAMD64">
316
<echo message="FreeBSDAMD64" />
317
<property name="compiler.cfg.id" value="compiler.cfg.freebsd" />
318
<property name="linker.cfg.id" value="linker.cfg.freebsd.amd64" />
319
<property name="c.src.dir.os" value="unix" />
322
<target name="declare.freebsd.x86" if="isFreeBSDX86">
323
<echo message="FreeBSDX86" />
324
<property name="compiler.cfg.id" value="compiler.cfg.freebsd" />
325
<property name="linker.cfg.id" value="linker.cfg.freebsd.x86" />
326
<property name="c.src.dir.os" value="unix" />
329
<target name="declare.freebsd" depends="declare.freebsd.x86,declare.freebsd.amd64" if="isFreeBSD" >
330
<property name="c.src.dir.os" value="unix" />
331
<property name="java.includes.dir.platform" value="${java.includes.dir}/freebsd" />
334
<target name="declare.hpux" if="isHPUX">
335
<echo message="HP-UX" />
336
<property name="compiler.cfg.id" value="compiler.cfg.hpux" />
337
<property name="linker.cfg.id" value="linker.cfg.hpux" />
338
<property name="c.src.dir.os" value="unix" />
339
<property name="java.includes.dir.hpux" value="${java.includes.dir}/hp-ux" />
342
<target name="c.configure" depends="gluegen.cpptasks.detect.os,gluegen.cpptasks.detect.compiler,setup.java.home.dir,declare.win32,declare.linux,declare.solaris,declare.macosx,declare.freebsd,declare.hpux,gluegen.cpptasks.configure.compiler" unless="build.javaonly" >
343
<!-- Common properties -->
344
<property name="java.includes.dir" value="${java.home.dir}/include" /> <!-- NOTE: this MUST be relative for FileSet -->
346
<property name="c.compiler.src.files.os" value="src/native/${c.src.dir.os}/*.c" />
348
<property name="output.lib.name" value="gluegen-rt" />
351
<target name="c.rename.lib.mingw" if="isMingW">
352
<!-- FIXME: this is a hack; the cpptask should have an option to change the
353
suffix or at least understand the override from .so to .dll -->
354
<move file="${build}/obj/libgluegen-rt.so" tofile="${build}/obj/gluegen-rt.dll" />
357
<target name="c.rename.lib.macosx" if="isOSX">
358
<move file="${build}/obj/libgluegen-rt.dylib" tofile="${build}/obj/libgluegen-rt.jnilib" />
359
<copy file="${build}/obj/libgluegen-rt.jnilib" tofile="${build}/obj/libgluegen-rt.so" />
362
<target name="c.manifest" if="isVC8Family">
363
<!-- exec mt, the Microsoft Manifest Tool, to include DLL manifests in order to resolve the location of msvcr80.dll -->
364
<msvc.manifest objdir="${build}/obj" dllname="gluegen-rt" />
367
<target name="c.build" depends="init, c.configure" unless="build.javaonly" >
369
<fail message="Requires '${c.compiler.src.files.os}'" unless="c.compiler.src.files.os"/>
370
<fail message="Requires '${compiler.cfg.id}'" unless="compiler.cfg.id"/>
371
<fail message="Requires '${linker.cfg.id}'" unless="linker.cfg.id"/>
372
<fail message="Requires '${output.lib.name}'" unless="output.lib.name"/>
374
<echo message="Output lib name = ${output.lib.name}" />
376
<!-- NOTE: the value of the debug and optimise attributes will not be overridden if already set externally -->
377
<property name="c.compiler.debug" value="false" />
378
<!-- Optimise flags one of { none, size, speed, minimal, full, aggressive, extreme, unsafe } -->
379
<property name="c.compiler.optimise" value="none" />
381
<condition property="c.compiler.use-debug"><istrue value="${c.compiler.debug}"/></condition>
383
<mkdir dir="${gluegen.lib.dir}"/>
385
<property name="c.compiler.src.files.common" value="src/native/common/*.c" />
387
<echo message="Compiling ${c.compiler.src.files.os} ${c.compiler.src.files.common}" />
388
<echo message="user.dir=${user.dir}" />
391
objdir="${gluegen.lib.dir}"
392
outfile="${gluegen.lib.dir}/${output.lib.name}"
393
optimize="${c.compiler.optimise}"
394
debug="${c.compiler.debug}"
399
<!-- TODO: versioninfo companyname="java.net"
400
legalcopyright="Copyright"
401
productname="GlueGen"
402
productversion="x.y.z"
403
description="Description"
405
filecomments="File Comment" /-->
409
<include name="${c.compiler.src.files.os}" />
410
<include name="${c.compiler.src.files.common}" />
414
<compiler extends="${compiler.cfg.id}" >
415
<sysincludepath path="${java.includes.dir}"/>
416
<sysincludepath path="${java.includes.dir.platform}"/>
417
<sysincludepath path="${stub.includes.dir}/platform"/>
420
<linker extends="${linker.cfg.id}" />
423
<antcall target="c.rename.lib.mingw" inheritRefs="true" />
424
<antcall target="c.rename.lib.macosx" inheritRefs="true" />
426
<antcall target="gluegen.cpptasks.striplibs" inheritRefs="true">
427
<param name="libdir" value="${gluegen.lib.dir}"/>
430
<antcall target="c.manifest" inheritRefs="true" />
433
<target name="gluegen.build.gluegen-rt.cdc" >
434
<!-- Build just the gluegen-rt.cdc.jar classes using the Java CDC
436
<copy todir="${classes-cdc}">
437
<fileset dir="${classes}"
438
includes="com/** net/**"
439
excludes="com/jogamp/gluegen/runtime/** com/jogamp/gluegen/test/**" />
442
<!-- bootclasspath="${javac.bootclasspath-cdc.jar}"-->
443
<javac destdir="${classes-cdc}"
446
debuglevel="source,lines,vars"
447
includeAntRuntime="false"
448
excludes="${gluegen.excludes}"
450
<src path="${src.java}" />
451
<src path="${src.generated.java-cdc}" />
452
<classpath refid="antlr.classpath" />
456
<!-- ================================================================== -->
460
<target name="pre-build">
463
<antcall target="create-map" inheritrefs="true">
464
<param name="map.name" value="IntObjectHashMap"/>
465
<param name="map.key" value="int"/>
466
<param name="map.value" value="Object"/>
467
<param name="map.null" value="null"/>
470
<antcall target="create-map" inheritrefs="true">
471
<param name="map.name" value="IntLongHashMap"/>
472
<param name="map.key" value="int"/>
473
<param name="map.value" value="long"/>
474
<param name="map.null" value="-1"/>
478
<antcall target="create-map" inheritrefs="true">
479
<param name="map.name" value="LongObjectHashMap"/>
480
<param name="map.key" value="long"/>
481
<param name="map.value" value="Object"/>
482
<param name="map.null" value="null"/>
485
<antcall target="create-map" inheritrefs="true">
486
<param name="map.name" value="LongIntHashMap"/>
487
<param name="map.key" value="long"/>
488
<param name="map.value" value="int"/>
489
<param name="map.null" value="-1"/>
492
<antcall target="create-map" inheritrefs="true">
493
<param name="map.name" value="LongLongHashMap"/>
494
<param name="map.key" value="long"/>
495
<param name="map.value" value="long"/>
496
<param name="map.null" value="-1"/>
501
<target name="create-map">
502
<!-- substitutes certain token in IntIntHashmap to create new primitive HasmMap-->
503
<copy file="${src.java}/com/jogamp/common/util/IntIntHashMap.java"
504
tofile="${src.generated.java}/com/jogamp/common/util/${map.name}.java" overwrite="true">
506
<replaceregex pattern="IntIntHashMap" replace="${map.name}"/>
507
<replaceregex pattern="@see ${map.name}" replace="@see IntIntHashMap"/>
508
<replaceregex pattern="/\*value\*/int/\*value\*/" replace="${map.value}"/>
509
<replaceregex pattern="/\*key\*/int/\*key\*/" replace="${map.key}"/>
510
<replaceregex pattern="/\*null\*/-1/\*null\*/" replace="${map.null}"/>
512
<!-- no clue why we have to do this twice... otherwise it will only replace one token per line -->
514
<replaceregex pattern="/\*value\*/int/\*value\*/" replace="${map.value}"/>
519
<target name="gluegen.build.check" depends="init">
520
<uptodate property="gluegen.build.skip">
521
<srcfiles dir= "." includes="*.xml"/>
522
<srcfiles dir= "${src.java}" includes="**"/>
523
<srcfiles dir= "${c.grammar}" includes="**/*.g"/>
524
<srcfiles dir= "${j.grammar}" includes="**/*.g"/>
525
<mapper type="merge" to="${build}/gluegen.jar"/>
529
<target name="gluegen.build" depends="gluegen.cpptasks.detect.os,gluegen.build.check" unless="gluegen.build.skip">
530
<antcall target="pre-build" inheritRefs="true"/>
532
<!-- Because ANTLR looks for importVocab files in the current
533
working directory, it likes to have all of its files,
534
including supergrammars, in one place, so copy all of the
535
grammars to the output directory up front so we don't put
536
temporary files into the source tree -->
537
<mkdir dir="${generated.java.from.c.grammar}" />
538
<copy todir="${generated.java.from.c.grammar}">
539
<fileset dir="${c.grammar}">
540
<include name="*.g" />
543
<mkdir dir="${generated.java.from.j.grammar}" />
544
<copy todir="${generated.java.from.j.grammar}">
545
<fileset dir="${j.grammar}">
546
<include name="*.g" />
550
<!-- Generate the Java files from the C grammar using ANTLR. -->
551
<antcall target="generate.grammar" inheritRefs="true">
552
<param name="output.dir" value="${generated.java.from.c.grammar}" />
553
<param name="target" value="StdCParser.g" />
555
<antcall target="generate.c.grammar.glib" inheritRefs="true">
556
<param name="output.dir" value="${generated.java.from.c.grammar}" />
557
<param name="target" value="GnuCParser.g" />
558
<param name="glib" value="StdCParser.g" />
560
<antcall target="generate.grammar" inheritRefs="true">
561
<param name="output.dir" value="${generated.java.from.c.grammar}" />
562
<param name="target" value="GnuCTreeParser.g" />
564
<antcall target="generate.c.grammar.glib" inheritRefs="true">
565
<param name="output.dir" value="${generated.java.from.c.grammar}" />
566
<param name="target" value="GnuCEmitter.g" />
567
<param name="glib" value="GnuCTreeParser.g" />
569
<antcall target="generate.c.grammar.glib" inheritRefs="true">
570
<param name="output.dir" value="${generated.java.from.c.grammar}" />
571
<param name="target" value="HeaderParser.g" />
572
<param name="glib" value="GnuCTreeParser.g" />
574
<antcall target="generate.grammar" inheritRefs="true">
575
<param name="output.dir" value="${generated.java.from.j.grammar}" />
576
<param name="target" value="JavaParser.g" />
579
<!-- Build GlueGen using the generated Java files along with the
580
- original source. -->
582
<property name="gluegen-rt.classes" value="com/jogamp/gluegen/runtime/**"/>
583
<property name="jogamp.common.classes" value="com/jogamp/common/**"/>
585
<!--compile gluegen-rt with source=1.4 first-->
586
<javac destdir="${classes}"
589
debuglevel="source,lines,vars"
590
includeAntRuntime="false"
591
includes="${gluegen-rt.classes},${jogamp.common.classes}"
592
excludes="${gluegen.excludes}">
593
<src path="${src.java}" />
594
<src path="${src.generated.java}" />
595
<classpath refid="antlr.classpath" />
598
<!--compile gluegen with source=1.5-->
599
<javac destdir="${classes}"
602
debuglevel="source,lines,vars"
603
includeAntRuntime="true"
604
excludes="${gluegen.excludes},${gluegen-rt.classes}">
605
<src path="${src.java}" />
606
<src path="${src.generated.java}" />
607
<classpath refid="antlr.classpath" />
610
<copy file="Manifest"
611
tofile="${build}/Manifest.temp"
614
<filter token="VERSION" value="${gluegen.version}"/>
615
<filter token="SCM_BRANCH" value="${gluegen.build.branch}"/>
616
<filter token="SCM_COMMIT" value="${gluegen.build.commit}"/>
617
<filter token="BASEVERSION" value="${gluegen_base_version}"/>
621
<!-- Build gluegen.jar. -->
622
<jar destfile="${build}/gluegen.jar" manifest="${build}/Manifest.temp">
623
<fileset dir="${classes}">
624
<include name="**/*.class" />
628
<copy file="Manifest-rt"
629
tofile="${build}/Manifest-rt.temp"
632
<filter token="VERSION" value="${gluegen.version}"/>
633
<filter token="SCM_BRANCH" value="${gluegen.build.branch}"/>
634
<filter token="SCM_COMMIT" value="${gluegen.build.commit}"/>
635
<filter token="BASEVERSION" value="${gluegen_base_version}"/>
639
<copy file="Manifest-rt.cdc"
640
tofile="${build}/Manifest-rt.cdc.temp"
643
<filter token="VERSION" value="${gluegen.version}"/>
644
<filter token="SCM_BRANCH" value="${gluegen.build.branch}"/>
645
<filter token="SCM_COMMIT" value="${gluegen.build.commit}"/>
646
<filter token="BASEVERSION" value="${gluegen_base_version}"/>
650
<!-- Build the (native code) NativeLibrary support for
651
gluegen-rt[-cdc].jar using the just-built GlueGen. -->
652
<antcall target="c.build" inheritRefs="true" />
654
<!-- Build gluegen-rt.jar. -->
655
<jar destfile="${build}/gluegen-rt.jar" manifest="${build}/Manifest-rt.temp">
656
<fileset dir="${classes}">
657
<include name="com/jogamp/gluegen/runtime/*.class" />
658
<include name="com/jogamp/common/**" />
661
<jar destfile="${build}/gluegen-rt-natives-${os.and.arch}.jar" manifest="${build}/Manifest-rt.temp">
662
<fileset dir="${build}/obj">
663
<include name="*gluegen-rt.${native.library.suffix}" />
667
<!-- Build just the gluegen-rt.cdc.jar classes using the Java CDC
669
<antcall target="gluegen.build.gluegen-rt.cdc" inheritRefs="true" />
671
<!-- Build gluegen-rt.cdc.jar. -->
672
<jar destfile="${build}/gluegen-rt.cdc.jar" manifest="${build}/Manifest-rt.cdc.temp">
673
<fileset dir="${classes-cdc}">
674
<include name="com/jogamp/gluegen/runtime/*.class" />
675
<include name="com/jogamp/common/impl/*.class" />
676
<include name="com/jogamp/common/jvm/*.class" />
677
<include name="com/jogamp/common/type/*.class" />
678
<include name="com/jogamp/common/util/*.class" />
679
<include name="com/jogamp/common/util/locks/*.class" />
680
<include name="com/jogamp/common/nio/*.class" />
681
<include name="com/jogamp/common/os/*.class" />
682
<include name="com/jogamp/common/*.class" />
685
<jar destfile="${build}/gluegen-rt-natives-${os.and.arch}-cdc.jar" manifest="${build}/Manifest-rt.cdc.temp">
686
<fileset dir="${build}/obj">
687
<include name="*gluegen-rt.${native.library.suffix-cdc}" />
691
<!-- Copy antlr.jar into build directory for convenience so
692
gluegen.jar can be run via "java -jar". antlr.jar is
693
referenced via a Class-Path entry in the Manifest of
695
<copy file="${antlr.jar}" todir="${build}" />
698
<target name="base.compile" depends="init, gluegen.build" />
700
<target name="all" depends="base.compile, junit.compile, tag.build, developer-zip-archive" />
702
<target name="clean" depends="init">
703
<delete includeEmptyDirs="true">
704
<fileset dir="${build}" />
708
<target name="tag.build" depends="init">
709
<echo message='gluegen.build.number=${gluegen.build.number}${line.separator}' file="${build}/artifact.properties"/>
710
<echo message='gluegen.build.id=${gluegen.build.id}${line.separator}' file="${build}/artifact.properties" append="true"/>
711
<echo message='gluegen.build.branch=${gluegen.build.branch}${line.separator}' file="${build}/artifact.properties" append="true"/>
712
<echo message='gluegen.build.commit=${gluegen.build.commit}${line.separator}' file="${build}/artifact.properties" append="true"/>
715
<target name="junit.compile" depends="init, gluegen.cpptasks.detect.os">
716
<mkdir dir="${build}/test/build/classes"/>
718
<javac destdir="${build}/test/build/classes" srcdir="${gluegen.root}/test/junit" source="1.5" failonerror="false"
719
debug="true" debuglevel="lines,vars,source" includeAntRuntime="false"
720
excludes="com/jogamp/gluegen/StructValidator.java">
721
<classpath path="${junit.jar}:${build}/classes:${build}/test/gensrc/java:${tools.jar}:${ant.core.lib}"/>
724
<ant antfile="build-junit.xml" target="junit.compile"/>
727
<target name="junit.run" depends="junit.compile">
728
<mkdir dir="${build}/test/results"/>
729
<delete quiet="true">
730
<fileset dir="${build}/test/results" includes="**"/>
733
<junit forkmode="once" showoutput="true" fork="true" includeAntRuntime="true">
734
<env key="${system.env.library.path}" path="${gluegen.lib.dir}${path.separator}${build}/test/build/natives"/>
735
<jvmarg value="-Djava.library.path=${gluegen.lib.dir}${path.separator}${build}/test/build/natives"/>
736
<jvmarg value="-Drootrel.build=${rootrel.build}"/>
737
<jvmarg value="-Dos.arch=${os.arch}"/>
738
<jvmarg value="-Dgluegen.user.compiler.file=${gluegen.user.compiler.file}"/>
739
<batchtest todir="${build}/test/results">
740
<fileset dir="${build}/test/build/classes">
741
<include name="com/jogamp/gluegen/**Test*"/>
742
<include name="com/jogamp/common/nio/**Test*"/>
743
<include name="com/jogamp/common/util/**Test*"/>
744
<include name="com/jogamp/common/util/locks/**Test*"/>
745
<exclude name="**/*$$*"/>
747
<formatter usefile="false" type="plain"/>
748
<formatter usefile="true" type="xml"/>
751
<path path="${build}/test/build/classes:${build}/test/gensrc/java:${build}/gluegen-rt.jar:${build}/gluegen.jar:${antlr.jar}:${junit.jar}:${tools.jar}:${ant.core.lib}"/>
755
<ant antfile="build-junit.xml" target="junit.run"/>
758
<target name="javadoc" depends="init">
759
<!-- Build the general public Javadoc in the target folder hierarchy javadoc/gluegen/javadoc -->
760
<delete dir="${javadoc.gluegen.path}" includeEmptyDirs="true" quiet="true" failonerror="false" />
761
<mkdir dir="${javadoc.gluegen.path}" />
762
<javadoc packagenames="com.jogamp.*"
763
sourcepath="${src.java};${src.generated.java}"
764
destdir="${javadoc.gluegen.path}" windowtitle="GlueGen Runtime Documentation"
765
overview="../src/java/com/jogamp/gluegen/package.html"
768
<classpath path="${classes}"/>
769
<link offline="true" href="${javadoc.link}" packagelistLoc="142-packages" />
770
<excludepackage name="com.jogamp.common.impl"/>
772
<zip destfile="${build}/javadoc.zip"
773
basedir="${javadoc.root.path}"
774
includes="gluegen/**" />
777
<!-- ================================================================== -->
779
- Build the per-platform binary zip archive for developers.
780
- This must be called after all of the build targets complete.
783
<target name="developer-zip-archive" depends="init" unless="build.noarchives">
784
<delete includeEmptyDirs="true" quiet="true" dir="${archive}" failonerror="false" />
785
<mkdir dir="${archive}" />
786
<copy file="${build}/artifact.properties" todir="${archive}"/>
787
<copy file="../LICENSE.txt" todir="${archive}" />
788
<mkdir dir="${archive}/jar" />
789
<copy todir="${archive}/jar">
790
<fileset dir="${build}" includes="gluegen*.jar"/>
792
<mkdir dir="${archive}/lib" />
793
<copy todir="${archive}/lib">
794
<fileset dir="${build}/obj" includes="*${native.library.suffix}"/>
796
<mkdir dir="${archive}/jnlp-files" />
797
<copy todir="${archive}/jnlp-files">
798
<fileset dir="${project.root}/jnlp-files" includes="*" />
800
<delete quiet="true" file="${build}/${archive.name}.zip"/>
801
<zip destfile="${build}/${archive.name}.zip"
803
includes="${archive.name}/**" />
804
<!-- Clean up after ourselves -->
805
<delete includeEmptyDirs="true" quiet="true" dir="${archive}" failonerror="false" />
808
<!-- Put the files created by target gluegen.build from
809
build directory to maven repository, local or remote
810
(targets maven.install and maven.deploy.snapshot respectively)-->
812
<import file="maven-common.xml" />
814
<target name="maven.prepare.pom">
815
<copy file="pom-template.xml" tofile="${build}/pom-${artifactId}.xml" overwrite="true">
817
<filter token="ARTIFACTID" value="${artifactId}"/>
818
<filter token="VERSION" value="${maven.artifacts.version}"/>
819
<filter token="DESCRIPTION" value="${description}"/>
820
<filter token="DEPENDENCIES" value=""/>
825
<target name="maven.prepare.native.pom">
826
<loadfile srcfile="pom-rt-dependency.xml" property="maven.dependencies.section"/>
827
<copy file="pom-template.xml" tofile="${build}/pom-${artifactId}-${os.and.arch}.xml" overwrite="true">
828
<filterchain description="Put in the dependencies section, then replace tokens">
830
<token key="DEPENDENCIES" value="${maven.dependencies.section}"/>
833
<token key="ARTIFACTID" value="${artifactId}"/>
834
<token key="VERSION" value="${maven.artifacts.version}"/>
835
<token key="DESCRIPTION" value="${description}"/>
841
<target name="maven.install.artifact">
842
<antcall target="maven.prepare.pom" inheritall="true"/>
843
<exec executable="mvn" dir="${build}">
844
<arg value="install:install-file"/>
845
<arg value="-Dfile=${artifactId}.jar"/>
846
<arg value="-DpomFile=pom-${artifactId}.xml"/>
847
<arg value="-DcreateChecksum=true"/>
852
<target name="maven.install.native.artifact">
853
<antcall target="maven.prepare.native.pom" inheritall="true"/>
854
<exec executable="mvn" dir="${build}">
855
<arg value="install:install-file"/>
856
<arg value="-Dfile=${artifactId}-${os.and.arch}.jar"/>
857
<arg value="-DpomFile=pom-${artifactId}-${os.and.arch}.xml"/>
858
<arg value="-DcreateChecksum=true"/>
859
<arg value="-Dclassifier=${os.and.arch}"/>
863
<target name="maven.deploy.artifact">
864
<antcall target="maven.prepare.pom" inheritall="true"/>
865
<exec executable="mvn" dir="${build}">
866
<arg value="deploy:deploy-file"/>
867
<arg value="-DrepositoryId=sonatype-nexus-snapshots"/>
868
<arg value="-Durl=https://oss.sonatype.org/content/repositories/snapshots/"/>
870
<arg value="-Dfile=${artifactId}.jar"/>
871
<arg value="-DpomFile=pom-${artifactId}.xml"/>
872
<arg value="-DcreateChecksum=true"/>
876
<target name="maven.deploy.native.artifact">
877
<antcall target="maven.prepare.native.pom" inheritall="true"/>
878
<exec executable="mvn" dir="${build}">
879
<arg value="deploy:deploy-file"/>
880
<arg value="-DrepositoryId=sonatype-nexus-snapshots"/>
881
<arg value="-Durl=https://oss.sonatype.org/content/repositories/snapshots/"/>
883
<arg value="-Dfile=${artifactId}-${os.and.arch}.jar"/>
884
<arg value="-DpomFile=pom-${artifactId}-${os.and.arch}.xml"/>
885
<arg value="-DcreateChecksum=true"/>
886
<arg value="-Dclassifier=${os.and.arch}"/>
890
<target name="maven.antcalls">
891
<antcall target="maven.${mvn.task}.artifact" inheritall="true">
892
<param name="artifactId" value="gluegen"/>
893
<param name="description" value="GlueGen - JNI Glue Code Generator"/>
895
<antcall target="maven.${mvn.task}.artifact" inheritall="true">
896
<param name="artifactId" value="gluegen-rt"/>
897
<param name="description" value="GlueGen runtime"/>
899
<antcall target="maven.${mvn.task}.native.artifact" inheritall="true">
900
<param name="artifactId" value="gluegen-rt-natives"/>
901
<param name="description" value="GlueGen runtime native libraries for ${os.and.arch}"/>
903
<!--<antcall target="maven.${mvn.task}.artifact" inheritall="true">-->
904
<!--<param name="artifactId" value="gluegen-rt-cdc"/>-->
905
<!--<param name="description" value="Gluegen CDC Runtime"/>-->
907
<!--<antcall target="maven.${mvn.task}.artifact" inheritall="true">-->
908
<!--<param name="artifactId" value="gluegen-rt-natives-cdc"/>-->
909
<!--<param name="description" value="Gluegen CDC runtime native libraries for ${os.and.arch}"/>-->
913
<target name="maven.install" depends="init, gluegen.build">
914
<property name="maven.artifacts.version" value="${gluegen_base_version}"/>
915
<antcall target="maven.antcalls" inheritall="true">
916
<param name="mvn.task" value="install"/>
920
<target name="maven.deploy.snapshot" depends="init, gluegen.build">
921
<property name="maven.artifacts.version" value="${gluegen_base_version}-SNAPSHOT"/>
922
<antcall target="maven.antcalls" inheritall="true">
923
<param name="mvn.task" value="deploy"/>