~ubuntu-branches/ubuntu/wily/gluegen2/wily

« back to all changes in this revision

Viewing changes to .pc/fix-alpha-build-config.patch/make/build.xml

  • Committer: Package Import Robot
  • Author(s): tony mancill
  • Date: 2013-11-03 21:11:45 UTC
  • mfrom: (9.1.16 sid)
  • Revision ID: package-import@ubuntu.com-20131103211145-152bo0das2i2sgev
Tags: 2.0.2-2
* Team upload.
* Apply patch to build config for FTBFS on alpha
  - Thank you to Michael Cree. (Closes: #728571)
* Freshen and apply patch to build config for FTBFS on ppc64
  - Thank you to Hiroyuki Yamamoto.  (Closes: #694070)
* Update Standards-Version to 3.9.5.
* Change debhelper version from 7 to 9; update debian/compat from 5 to 9.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?xml version="1.0" encoding="UTF-8"?>
 
2
<!--
 
3
   - Ant build for GlueGen and corresponding ANT tasks. Also builds
 
4
   - JOGL-specific BuildStaticGLInfo and its corresponding ANT task.
 
5
   -
 
6
   - This build has been tested with ANT 1.6.2 and ANTLR 2.7.4.
 
7
   -
 
8
   - Public targets:
 
9
   -   all:  clean and build GlueGen and GlueGen Ant task
 
10
   -   clean:  clean all built
 
11
  -->
 
12
<project name="GlueGen" basedir="." default="all">
 
13
 
 
14
  <import file="gluegen-cpptasks.xml" />
 
15
  <import file="jogamp-archivetasks.xml" />
 
16
  <import file="jogamp-androidtasks.xml" />
 
17
  <import file="jogamp-env.xml" />
 
18
 
 
19
  <condition property="rootrel.build" value="build">
 
20
    <not>
 
21
      <isset property="rootrel.build"/>
 
22
    </not>
 
23
  </condition>
 
24
 
 
25
  <target name="setup.excludes.nsig" unless="gluegen.nsig">
 
26
    <property name="gluegen.excludes.nsig" value="com/jogamp/gluegen/runtime/BufferFactoryInternal.java com/jogamp/gluegen/nativesig/**" />
 
27
  </target>
 
28
 
 
29
  <target name="init.base" depends="jogamp.env.init,gluegen.properties.load.user,gluegen.cpptasks.detect.os,setup.excludes.nsig">
 
30
    <!-- Create the classpath for compiling GlueGen. 
 
31
         This requires the user-defined "antlr.jar" property. -->
 
32
    <path id="cc_gluegen.classpath">
 
33
      <pathelement location="${antlr.jar}" />
 
34
    </path>
 
35
  </target>
 
36
 
 
37
  <target name="init.android" if="android-jars.available" >
 
38
    <!-- Create the classpath for compiling Android only stuff. -->
 
39
    <path id="android.classpath">
 
40
      <pathelement location="${android-min.jar}"/>
 
41
    </path>
 
42
 
 
43
    <!-- Create the classpath for compiling GlueGen. 
 
44
         This requires the user-defined "antlr.jar" property. -->
 
45
    <path id="cc_gluegen_android.classpath">
 
46
      <pathelement location="${antlr.jar}" />
 
47
      <pathelement location="${android-min.jar}"/>
 
48
    </path>
 
49
  </target>
 
50
 
 
51
  <target name="init" depends="init.base, init.android">
 
52
    <!-- Declare all paths and user defined variables. -->
 
53
 
 
54
    <!-- property name="javadoc.link" value="http://java.sun.com/j2se/1.4.2/docs/api/" /-->
 
55
    <!-- property name="javadoc.link" value="http://download.oracle.com/javase/1.5.0/docs/api/" /-->
 
56
    <property name="javadoc.link" value="http://docs.oracle.com/javase/6/docs/api/" />
 
57
 
 
58
    <!-- The source and build directories. -->
 
59
    <property name="project.root"  value=".." />
 
60
    <property name="src.java" value="${project.root}/src/java" />
 
61
    <property name="build"    location="${project.root}/${rootrel.build}" />
 
62
    <property name="javadoc.root.path"    location="${build}/javadoc" />
 
63
    <property name="javadoc.gluegen.path" location="${javadoc.root.path}/gluegen/javadoc" />
 
64
    <property name="gluegen.lib.dir" value="${build}/obj"/>
 
65
 
 
66
    <property name="gluegen.build.number" value="manual"/>
 
67
    <property name="gluegen.build.id"     value="${version.timestamp}"/>
 
68
    <mkdir dir="${build}" />
 
69
    <property name="gluegen.build.branch" value="manual"/> <!-- fallback -->
 
70
    <exec dir="${project.root}" executable="git" logError="true" failonerror="false" failifexecutionfails="false"
 
71
              outputproperty="gluegen.build.commit">
 
72
        <arg line="rev-parse HEAD"/>
 
73
    </exec>
 
74
    <property name="gluegen.build.commit" value="manual"/> <!-- fallback -->
 
75
 
 
76
    <property name="gluegen.version" value="${jogamp.version.base}-b${gluegen.build.number}-${version.timestamp}" />
 
77
 
 
78
    <property name="stub.includes.dir" value="stub_includes" /> <!-- NOTE:  this MUST be relative for FileSet -->
 
79
 
 
80
    <!-- The generated source directories. -->
 
81
    <property name="src.generated"          value="${build}/gensrc" />
 
82
    <property name="src.generated.java"     value="${src.generated}/java" />
 
83
    <property name="src.generated.c"        value="${src.generated}/native" />
 
84
 
 
85
    <!-- The compiler output directories. -->
 
86
    <property name="classes" value="${build}/classes" />
 
87
 
 
88
    <!-- Call the external config validator script to make sure the config is ok and consistent -->
 
89
    <ant antfile="validate-properties.xml" inheritall="true"/>
 
90
 
 
91
    <!-- Create the required output directories. -->
 
92
    <mkdir dir="${src.generated.java}" />
 
93
    <mkdir dir="${src.generated.c}" />
 
94
    <mkdir dir="${src.generated.c}/Unix" />
 
95
    <mkdir dir="${src.generated.c}/Windows" />
 
96
    <mkdir dir="${classes}" />
 
97
 
 
98
    <!-- Create the classpath for ANTLR.  
 
99
         This requires the user-defined "antlr.jar" property. -->
 
100
    <path id="antlr.classpath">
 
101
      <pathelement location="${antlr.jar}" />
 
102
    </path>
 
103
    
 
104
    <!-- Create the classpath for using GlueGen. -->
 
105
    <path id="gluegen.classpath" >
 
106
      <pathelement location="${classes}" />
 
107
      <pathelement location="${antlr.jar}" />
 
108
    </path>
 
109
 
 
110
    <!-- The location of the GlueGen source and the C grammar files. -->
 
111
    <property name="gluegen" value="${src.java}/com/jogamp/gluegen" />
 
112
    <property name="c.grammar" value="${gluegen}/cgram" />
 
113
    <property name="j.grammar" value="${gluegen}/jgram" />
 
114
        
 
115
    <!-- The resulting location of the generated Java files from the
 
116
      - C grammar via ANTLR. -->
 
117
    <property name="gluegen.build" value="${src.generated.java}/com/jogamp/gluegen" />
 
118
    <property name="generated.java.from.c.grammar" value="${gluegen.build}/cgram" />
 
119
    <property name="generated.java.from.j.grammar" value="${gluegen.build}/jgram" />
 
120
 
 
121
    <property name="tools.jar" value="${java.home}/../lib/tools.jar"/>
 
122
 
 
123
    <property name="archive.name"     value="gluegen-${gluegen.version}-${os.and.arch}" />
 
124
    <property name="archive"          value="${build}/${archive.name}" />
 
125
 
 
126
    <!-- the launcher is compiled and packaged explicit - if android -->
 
127
    <property name="jogamp-android-launcher.classes" value="jogamp/android/launcher/**"/>
 
128
 
 
129
    <!-- optional android classes - if android -->
 
130
    <property name="java.part.android" value="jogamp/common/os/android/**"/>
 
131
 
 
132
    <!-- property name="java.part.awt" value="com/jogamp/common/util/awt/** jogamp/common/awt/**"/-->
 
133
    <property name="java.part.awt" value="com/jogamp/common/util/awt/**"/>
 
134
    <property name="gluegen-rt.classes" value="com/jogamp/gluegen/runtime/**"/>
 
135
    <property name="jogamp.common.classes" value="com/jogamp/common/** jogamp/common/**"/>
 
136
 
 
137
    <property name="gluegen.excludes.all" value="${gluegen.excludes.nsig} ${jogamp-android-launcher.classes}" />
 
138
  </target>
 
139
 
 
140
  <target name="init.gg" depends="init">
 
141
    <!-- Define the GlueGen task we just built -->
 
142
    <taskdef name="gluegen" classname="com.jogamp.gluegen.ant.GlueGenTask"
 
143
             classpathref="gluegen.classpath" />
 
144
  </target>
 
145
 
 
146
  <target name="set.debug">
 
147
    <property name="c.compiler.debug" value="true" /> 
 
148
    <property name="javacdebug"       value="true" /> 
 
149
    <property name="javacdebuglevel"  value="source,lines,vars" /> 
 
150
  </target>
 
151
  <target name="init.debug" depends="set.debug, init"/>
 
152
 
 
153
  <!--
 
154
    - Using ANTLR generate the specified Java files.
 
155
    -
 
156
    - @param target the grammar file to process
 
157
    - @param output.dir the directory to write the generated files to.  If
 
158
    -        the directory does not exist, it will be created.
 
159
    -->
 
160
  <target name="generate.grammar">
 
161
    <!-- Generate the Java files -->
 
162
    <antlr target="${output.dir}/${target}" outputdirectory="${output.dir}">
 
163
      <classpath refid="antlr.classpath" />
 
164
    </antlr>
 
165
  </target>
 
166
    
 
167
  <!--
 
168
    - Using ANTLR generate the specified Java files with an overridden
 
169
    - grammar file.
 
170
    -
 
171
    - @param target the grammar file to process
 
172
    - @param glib the overridding grammar file
 
173
    - @param output.dir the directory to write the generated files to.  If
 
174
    -        the directory does not exist, it will be created.
 
175
   -->
 
176
  <target name="generate.c.grammar.glib">
 
177
    <!-- Generate the Java files -->
 
178
    <antlr target="${output.dir}/${target}" glib="${output.dir}/${glib}" outputdirectory="${output.dir}">
 
179
      <classpath refid="antlr.classpath" />
 
180
    </antlr>
 
181
  </target>
 
182
 
 
183
  <property name="gluegen.root" value="../" />
 
184
 
 
185
  <!-- Use GlueGen to generate the source code for the ElfHeader
 
186
       implementation. Note that to make the build process simpler (in
 
187
       particular, the nightly builds) we do not do this every time we
 
188
       run the build, but instead check in the generated sources to
 
189
       the source tree. -->
 
190
  <target name="generate.os.sources" depends="init.gg" >
 
191
    <property name="stub.includes.gluegen.gg"  value="stub_includes/gluegen" />
 
192
    <dirset id="stub.includes.fileset.os" dir=".">
 
193
      <include name="stub_includes/os/**" />
 
194
    </dirset>
 
195
    <gluegen src="stub_includes/os/elf_header.h"
 
196
             config="elf-header.cfg"
 
197
             includeRefId="stub.includes.fileset.os"
 
198
             literalInclude="${stub.includes.gluegen.gg}"
 
199
             emitter="com.jogamp.gluegen.JavaEmitter"
 
200
             debug="false">
 
201
      <classpath refid="gluegen.classpath" />
 
202
    </gluegen>
 
203
    <!-- Only to cherry pick defines -> java files
 
204
    <gluegen src="stub_includes/os/elf_eh_const.h"
 
205
             config="elf-eh-const.cfg"
 
206
             includeRefId="stub.includes.fileset.os"
 
207
             literalInclude="${stub.includes.gluegen.gg}"
 
208
             emitter="com.jogamp.gluegen.JavaEmitter"
 
209
             debug="false">
 
210
      <classpath refid="gluegen.classpath" />
 
211
    </gluegen>
 
212
    <gluegen src="stub_includes/os/elf_sh_const.h"
 
213
             config="elf-sh-const.cfg"
 
214
             includeRefId="stub.includes.fileset.os"
 
215
             literalInclude="${stub.includes.gluegen.gg}"
 
216
             emitter="com.jogamp.gluegen.JavaEmitter"
 
217
             debug="false">
 
218
      <classpath refid="gluegen.classpath" />
 
219
    </gluegen> -->
 
220
  </target>
 
221
 
 
222
    <!-- ================================================================== -->
 
223
    <!-- 
 
224
       - Compile the native C code for GlueGen's dynamic linker interface.
 
225
      -->
 
226
 
 
227
    <target name="declare.win32.vc6" if="isVC6">
 
228
      <echo message="Win32.VC6" />
 
229
      <property name="compiler.cfg.id"                      value="compiler.cfg.win32.msvc" />
 
230
      <property name="linker.cfg.id"                        value="linker.cfg.win32.msvc" />
 
231
    </target>
 
232
    
 
233
    <target name="declare.win32.vc7" if="isVC7">
 
234
      <echo message="Win32.VC7" />
 
235
      <property name="compiler.cfg.id"                      value="compiler.cfg.win32.msvc" />
 
236
      <property name="linker.cfg.id"                        value="linker.cfg.win32.msvc" />
 
237
    </target>
 
238
    
 
239
    <target name="declare.win32.vc8" if="isVC8">
 
240
      <echo message="Win32.VC8" />
 
241
      <property name="compiler.cfg.id"                      value="compiler.cfg.win32.msvc" />
 
242
      <property name="linker.cfg.id"                        value="linker.cfg.win32.msvc" />
 
243
    </target>
 
244
    
 
245
    <target name="declare.win32.vc8_x64" if="isVC8_X64">
 
246
      <echo message="Win32.VC8_X64" />
 
247
      <property name="compiler.cfg.id"                      value="compiler.cfg.win32.msvc" />
 
248
      <property name="linker.cfg.id"                        value="linker.cfg.win32.msvc" />
 
249
    </target>
 
250
    
 
251
    <target name="declare.win32.vc9" if="isVC9">
 
252
      <echo message="Win32.VC9" />
 
253
      <property name="compiler.cfg.id"                      value="compiler.cfg.win32.msvc" />
 
254
      <property name="linker.cfg.id"                        value="linker.cfg.win32.msvc" />
 
255
    </target>
 
256
    
 
257
    <target name="declare.win32.mingw" if="isMingW32">
 
258
      <echo message="Win32.MingW" />
 
259
      <property name="compiler.cfg.id"                      value="compiler.cfg.win32.mingw" />
 
260
      <property name="linker.cfg.id"                        value="linker.cfg.win32.mingw" />
 
261
    </target>
 
262
 
 
263
    <target name="declare.win64.mingw" if="isMingW64">
 
264
      <echo message="Win64.MingW" />
 
265
      <property name="compiler.cfg.id"                      value="compiler.cfg.win64.mingw" />
 
266
      <property name="linker.cfg.id"                        value="linker.cfg.win64.mingw" />
 
267
    </target>
 
268
 
 
269
    <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" >
 
270
      <property name="c.src.dir.os"                         value="windows" />
 
271
      <property name="java.includes.dir.platform"           value="${java.includes.dir}/win32" />
 
272
    </target>
 
273
 
 
274
    <target name="declare.linux.x86" if="isLinuxX86">
 
275
      <echo message="Linux.x86" />
 
276
      <property name="compiler.cfg.id"                      value="compiler.cfg.linux.x86" /> 
 
277
      <property name="linker.cfg.id"                        value="linker.cfg.linux.x86" /> 
 
278
    </target>
 
279
    
 
280
    <target name="declare.linux.amd64" if="isLinuxAMD64">
 
281
      <echo message="Linux.AMD64" />
 
282
      <property name="compiler.cfg.id"                      value="compiler.cfg.linux.amd64" />
 
283
      <property name="linker.cfg.id"                        value="linker.cfg.linux.amd64" />
 
284
    </target>
 
285
    
 
286
    <target name="declare.linux.ia64" if="isLinuxIA64">
 
287
      <echo message="Linux.IA64" />
 
288
      <property name="compiler.cfg.id"                      value="compiler.cfg.linux" /> 
 
289
      <property name="linker.cfg.id"                        value="linker.cfg.linux" /> 
 
290
    </target>
 
291
 
 
292
    <target name="declare.linux.armv6.armel" if="isLinuxARMv6Armel">
 
293
      <echo message="Linux.armv6.armel" />
 
294
      <property name="compiler.cfg.id"                      value="compiler.cfg.linux.armv6.armel" /> 
 
295
      <property name="linker.cfg.id"                        value="linker.cfg.linux.armv6.armel" /> 
 
296
    </target>
 
297
 
 
298
    <target name="declare.linux.armv6.armhf" if="isLinuxARMv6Armhf">
 
299
      <echo message="Linux.armv6.armhf" />
 
300
      <property name="compiler.cfg.id"                      value="compiler.cfg.linux" /> 
 
301
      <property name="linker.cfg.id"                        value="linker.cfg.linux.armv6.armhf" /> 
 
302
    </target>
 
303
 
 
304
    <target name="declare.linux.alpha" if="isLinuxAlpha">
 
305
      <echo message="Linux.alpha" />
 
306
      <property name="compiler.cfg.id"                      value="compiler.cfg.linux" /> 
 
307
      <property name="linker.cfg.id"                        value="linker.cfg.linux.alpha" /> 
 
308
    </target>
 
309
 
 
310
    <target name="declare.linux.hppa" if="isLinuxHppa">
 
311
      <echo message="Linux.hppa" />
 
312
      <property name="compiler.cfg.id"                      value="compiler.cfg.linux" /> 
 
313
      <property name="linker.cfg.id"                        value="linker.cfg.linux.hppa" /> 
 
314
    </target>
 
315
 
 
316
    <target name="declare.linux.mips" if="isLinuxMips">
 
317
      <echo message="Linux.mips" />
 
318
      <property name="compiler.cfg.id"                      value="compiler.cfg.linux" /> 
 
319
      <property name="linker.cfg.id"                        value="linker.cfg.linux.mips" /> 
 
320
    </target>
 
321
 
 
322
    <target name="declare.linux.mipsel" if="isLinuxMipsel">
 
323
      <echo message="Linux.mipsel" />
 
324
      <property name="compiler.cfg.id"                      value="compiler.cfg.linux" /> 
 
325
      <property name="linker.cfg.id"                        value="linker.cfg.linux.mipsel" /> 
 
326
    </target>
 
327
 
 
328
    <target name="declare.linux.ppc" if="isLinuxPpc">
 
329
      <echo message="Linux.ppc" />
 
330
      <property name="compiler.cfg.id"                      value="compiler.cfg.linux" /> 
 
331
      <property name="linker.cfg.id"                        value="linker.cfg.linux.ppc" /> 
 
332
    </target>
 
333
 
 
334
    <target name="declare.linux.s390" if="isLinuxs390">
 
335
      <echo message="Linux.s390" />
 
336
      <property name="compiler.cfg.id"                      value="compiler.cfg.linux" /> 
 
337
      <property name="linker.cfg.id"                        value="linker.cfg.linux.s390" /> 
 
338
    </target>
 
339
 
 
340
    <target name="declare.linux.s390x" if="isLinuxs390x">
 
341
      <echo message="Linux.s390x" />
 
342
      <property name="compiler.cfg.id"                      value="compiler.cfg.linux" /> 
 
343
      <property name="linker.cfg.id"                        value="linker.cfg.linux.s390x" /> 
 
344
    </target>
 
345
 
 
346
    <target name="declare.linux.sparc" if="isLinuxSparc">
 
347
      <echo message="Linux.sparc" />
 
348
      <property name="compiler.cfg.id"                      value="compiler.cfg.linux" /> 
 
349
      <property name="linker.cfg.id"                        value="linker.cfg.linux.sparc" /> 
 
350
    </target>
 
351
    
 
352
    <target name="declare.linux" depends="declare.linux.x86,declare.linux.amd64,declare.linux.ia64,declare.linux.hppa,declare.linux.mips,declare.linux.mipsel,declare.linux.ppc,declare.linux.s390,declare.linux.s390x,declare.linux.sparc,declare.linux.armv6.armel,declare.linux.armv6.armhf" if="isLinux" >
 
353
      <property name="c.src.dir.os"                         value="unix" />
 
354
      <property name="java.includes.dir.platform"           value="${java.includes.dir}/linux" />
 
355
    </target>
 
356
 
 
357
    <target name="declare.android" if="isAndroid" >
 
358
      <property name="c.src.dir.os"                         value="unix" />
 
359
    </target>
 
360
 
 
361
    <target name="declare.solaris32" if="isSolaris32Bit">
 
362
      <echo message="Solaris" />
 
363
      <property name="compiler.cfg.id"                      value="compiler.cfg.solaris" /> 
 
364
      <property name="linker.cfg.id"                        value="linker.cfg.solaris" /> 
 
365
    </target>
 
366
 
 
367
    <target name="declare.solarisSparcv9" if="isSolarisSparcv9">
 
368
      <echo message="SolarisSparcv9" />
 
369
      <property name="compiler.cfg.id"                      value="compiler.cfg.solaris.sparcv9" /> 
 
370
      <property name="linker.cfg.id"                        value="linker.cfg.solaris.sparcv9" /> 
 
371
    </target>
 
372
 
 
373
    <target name="declare.solarisAMD64" if="isSolarisAMD64">
 
374
      <echo message="SolarisAMD64" />
 
375
      <property name="compiler.cfg.id"                      value="compiler.cfg.solaris.amd64" /> 
 
376
      <property name="linker.cfg.id"                        value="linker.cfg.solaris.amd64" /> 
 
377
    </target>
 
378
   
 
379
    <target name="declare.solaris" depends="declare.solaris32,declare.solarisSparcv9,declare.solarisAMD64" if="isSolaris" >
 
380
      <property name="c.src.dir.os"                         value="unix" />
 
381
      <property name="java.includes.dir.platform"           value="${java.includes.dir}/solaris" />
 
382
    </target>
 
383
 
 
384
    <target name="declare.macosx" if="isOSX">
 
385
      <echo message="MacOSX" />
 
386
      <property name="compiler.cfg.id"                      value="compiler.cfg.macosx" /> 
 
387
      <property name="linker.cfg.id"                        value="linker.cfg.macosx" /> 
 
388
      <property name="c.src.dir.os"                         value="unix" />
 
389
    </target>
 
390
    
 
391
    <target name="declare.freebsd.amd64" if="isFreeBSDAMD64">
 
392
      <echo message="FreeBSDAMD64" />
 
393
      <property name="compiler.cfg.id"                      value="compiler.cfg.freebsd" />
 
394
      <property name="linker.cfg.id"                        value="linker.cfg.freebsd.amd64" />
 
395
      <property name="c.src.dir.os"                         value="unix" />
 
396
    </target>
 
397
 
 
398
    <target name="declare.freebsd.x86" if="isFreeBSDX86">
 
399
      <echo message="FreeBSDX86" />
 
400
      <property name="compiler.cfg.id"                      value="compiler.cfg.freebsd" />
 
401
      <property name="linker.cfg.id"                        value="linker.cfg.freebsd.x86" />
 
402
      <property name="c.src.dir.os"                         value="unix" />
 
403
    </target>
 
404
 
 
405
    <target name="declare.freebsd" depends="declare.freebsd.x86,declare.freebsd.amd64" if="isFreeBSD" >
 
406
      <property name="c.src.dir.os"                         value="unix" />
 
407
      <property name="java.includes.dir.platform"           value="${java.includes.dir}/freebsd" />
 
408
    </target>
 
409
 
 
410
    <target name="declare.hpux" if="isHPUX">
 
411
      <echo message="HP-UX" />
 
412
      <property name="compiler.cfg.id"                      value="compiler.cfg.hpux" />
 
413
      <property name="linker.cfg.id"                        value="linker.cfg.hpux" />
 
414
      <property name="c.src.dir.os"                         value="unix" />
 
415
      <property name="java.includes.dir.hpux"               value="${java.includes.dir}/hp-ux" />
 
416
    </target>
 
417
 
 
418
    <target name="c.configure" depends="gluegen.cpptasks.detect.os,gluegen.cpptasks.setup.compiler,declare.win32,declare.linux,declare.android,declare.solaris,declare.macosx,declare.freebsd,declare.hpux,gluegen.cpptasks.configure.compiler" unless="build.javaonly" />
 
419
 
 
420
    <target name="c.rename.lib.mingw" if="isMingW">
 
421
      <!-- FIXME: this is a hack; the cpptask should have an option to change the
 
422
           suffix or at least understand the override from .so to .dll -->
 
423
      <move file="${build}/obj/libgluegen-rt.so" tofile="${build}/obj/gluegen-rt.dll" />
 
424
    </target>
 
425
 
 
426
    <target name="c.rename.lib.macosx" if="isOSX">
 
427
      <move file="${build}/obj/libgluegen-rt.dylib" tofile="${build}/obj/libgluegen-rt.jnilib" />
 
428
      <copy file="${build}/obj/libgluegen-rt.jnilib" tofile="${build}/obj/libgluegen-rt.so" />
 
429
    </target>
 
430
 
 
431
    <target name="c.manifest" if="isVC8Family">
 
432
      <!-- exec mt, the Microsoft Manifest Tool, to include DLL manifests in order to resolve the location of msvcr80.dll -->
 
433
      <msvc.manifest objdir="${build}/obj" dllname="gluegen-rt" />
 
434
    </target>
 
435
 
 
436
    <target name="gluegen.build.c" depends="init, c.configure" unless="build.javaonly" >
 
437
      <property name="c.compiler.src.files.common" value="src/native/common/*.c" />
 
438
      <property name="c.compiler.src.files.os" value="src/native/${c.src.dir.os}/*.c" />
 
439
 
 
440
      <property name="output.lib.name" value="gluegen-rt" />
 
441
      <condition property="output.lib.name.os" value="lib${output.lib.name}.so"><isset property="isUnix"/></condition>
 
442
      <condition property="output.lib.name.os" value="${output.lib.name}.dll"><isset property="isWindows"/></condition>
 
443
      <condition property="output.lib.name.os" value="lib${output.lib.name}.jnilib"><isset property="isOSX"/></condition>
 
444
 
 
445
      <uptodate property="gluegen.build.skip.c">
 
446
        <srcfiles dir= "${project.root}"  includes="${c.compiler.src.files.os}"/>
 
447
        <srcfiles dir= "${project.root}"  includes="${c.compiler.src.files.common}"/>
 
448
        <mapper type="merge" to="${gluegen.lib.dir}/${output.lib.name.os}"/>
 
449
      </uptodate>
 
450
 
 
451
      <antcall target="gluegen.build.c.impl" inheritAll="true" inheritRefs="true" />
 
452
    </target>
 
453
 
 
454
    <target name="gluegen.build.c.impl" depends="init, c.configure" unless="gluegen.build.skip.c">
 
455
      <fail message="Requires '${compiler.cfg.id}'"      unless="compiler.cfg.id"/>
 
456
      <fail message="Requires '${linker.cfg.id}'"        unless="linker.cfg.id"/>
 
457
 
 
458
      <javah destdir="${src.generated.c}"         classpath="${classes}" class="jogamp.common.os.MachineDescriptionRuntime" />
 
459
      <javah destdir="${src.generated.c}"         classpath="${classes}" class="jogamp.common.jvm.JVMUtil" />
 
460
      <javah destdir="${src.generated.c}"         classpath="${classes}" class="com.jogamp.common.nio.PointerBuffer" />
 
461
      <javah destdir="${src.generated.c}/Unix"    classpath="${classes}" class="jogamp.common.os.UnixDynamicLinkerImpl" />
 
462
      <javah destdir="${src.generated.c}/Windows" classpath="${classes}" class="jogamp.common.os.WindowsDynamicLinkerImpl"/>
 
463
 
 
464
      <echo message="Output lib name = ${output.lib.name} -> ${output.lib.name.os}" />
 
465
 
 
466
      <mkdir dir="${gluegen.lib.dir}"/>
 
467
 
 
468
      <echo message="Compiling ${c.compiler.src.files.os} ${c.compiler.src.files.common}" />
 
469
      <echo message="user.dir=${user.dir}" />
 
470
 
 
471
      <cc outtype="shared" 
 
472
          objdir="${gluegen.lib.dir}"
 
473
          outfile="${gluegen.lib.dir}/${output.lib.name}"
 
474
          optimize="${c.compiler.optimise}" 
 
475
          debug="${c.compiler.debug}"
 
476
          multithreaded="true" 
 
477
          exceptions="false" 
 
478
          rtti="false">   
 
479
 
 
480
        <!-- TODO: versioninfo  companyname="java.net"
 
481
                      legalcopyright="Copyright"
 
482
                      productname="GlueGen" 
 
483
                      productversion="x.y.z"
 
484
                      description="Description"
 
485
                      fileversion="x.y.z" 
 
486
                      filecomments="File Comment" /-->      
 
487
 
 
488
        <fileset dir="..">
 
489
          <patternset>
 
490
            <include name="${c.compiler.src.files.os}" />
 
491
            <include name="${c.compiler.src.files.common}" />
 
492
          </patternset>
 
493
        </fileset>
 
494
 
 
495
        <compiler extends="${compiler.cfg.id}" >
 
496
          <sysincludepath path="${java.includes.dir}"/>
 
497
          <sysincludepath path="${java.includes.dir.platform}"/>
 
498
          <sysincludepath path="${stub.includes.dir}/platform"/>
 
499
 
 
500
          <includepath path="${src.generated.c}" />
 
501
          <includepath path="${src.generated.c}/Unix" if="isUnix"/>
 
502
          <includepath path="${src.generated.c}/Unix" if="isOSX"/>
 
503
          <includepath path="${src.generated.c}/Windows" if="isWindows"/>
 
504
        </compiler>
 
505
 
 
506
        <linker extends="${linker.cfg.id}" />
 
507
      </cc>
 
508
 
 
509
      <antcall target="c.rename.lib.mingw" inheritRefs="true" />
 
510
      <antcall target="c.rename.lib.macosx" inheritRefs="true" />
 
511
 
 
512
      <antcall target="gluegen.cpptasks.striplibs" inheritRefs="true">
 
513
          <param name="libdir" value="${gluegen.lib.dir}"/>
 
514
      </antcall>
 
515
 
 
516
      <antcall target="c.manifest" inheritRefs="true" />
 
517
 
 
518
      <jar destfile="${build}/gluegen-rt-natives-${os.and.arch}.jar" manifest="${build}/Manifest-rt-natives.temp">
 
519
        <fileset dir="${build}/obj">
 
520
          <include name="*gluegen-rt.${native.library.suffix}" />
 
521
        </fileset>
 
522
      </jar>
 
523
 
 
524
    </target>  
 
525
 
 
526
  <!-- ================================================================== -->
 
527
  <!--
 
528
    - Build GlueGen.
 
529
    -->
 
530
  <target name="generate-hash-maps">
 
531
 
 
532
    <!-- Int*Maps -->
 
533
    <antcall target="create-map" inheritrefs="true">
 
534
        <param name="map.name" value="IntObjectHashMap"/>
 
535
        <param name="map.key" value="int"/>
 
536
        <param name="map.keyHash" value="\1"/>
 
537
        <param name="map.value" value="Object"/>
 
538
        <param name="map.null" value="null"/>
 
539
    </antcall>
 
540
 
 
541
    <antcall target="create-map" inheritrefs="true">
 
542
        <param name="map.name" value="IntLongHashMap"/>
 
543
        <param name="map.key" value="int"/>
 
544
        <param name="map.keyHash" value="\1"/>
 
545
        <param name="map.value" value="long"/>
 
546
        <param name="map.null" value="-1"/>
 
547
    </antcall>
 
548
 
 
549
    <!-- Long*Maps -->
 
550
    <antcall target="create-map" inheritrefs="true">
 
551
        <param name="map.name" value="LongObjectHashMap"/>
 
552
        <param name="map.key" value="long"/>
 
553
        <param name="map.keyHash" value="HashUtil.getAddrHash32_EqualDist(\1)"/>
 
554
        <param name="map.value" value="Object"/>
 
555
        <param name="map.null" value="null"/>
 
556
    </antcall>
 
557
 
 
558
    <antcall target="create-map" inheritrefs="true">
 
559
        <param name="map.name" value="LongIntHashMap"/>
 
560
        <param name="map.key" value="long"/>
 
561
        <param name="map.keyHash" value="HashUtil.getAddrHash32_EqualDist(\1)"/>
 
562
        <param name="map.value" value="int"/>
 
563
        <param name="map.null" value="-1"/>
 
564
    </antcall>
 
565
 
 
566
    <antcall target="create-map" inheritrefs="true">
 
567
        <param name="map.name" value="LongLongHashMap"/>
 
568
        <param name="map.key" value="long"/>
 
569
        <param name="map.keyHash" value="HashUtil.getAddrHash32_EqualDist(\1)"/>
 
570
        <param name="map.value" value="long"/>
 
571
        <param name="map.null" value="-1"/>
 
572
    </antcall>
 
573
 
 
574
  </target>
 
575
 
 
576
  <target name="create-map">
 
577
    <!-- substitutes certain token in IntIntHashmap to create new primitive HasmMap-->
 
578
    <copy file="${src.java}/com/jogamp/common/util/IntIntHashMap.java"
 
579
        tofile="${src.generated.java}/com/jogamp/common/util/${map.name}.java" overwrite="true">
 
580
        <filterchain>
 
581
            <replaceregex pattern="IntIntHashMap" replace="${map.name}"/>
 
582
            <replaceregex pattern="@see ${map.name}" replace="@see IntIntHashMap"/>
 
583
            <replaceregex pattern="/\*value\*/int/\*value\*/" replace="${map.value}"/>
 
584
            <replaceregex pattern="/\*key\*/int/\*key\*/" replace="${map.key}"/>
 
585
            <replaceregex pattern="/\*keyHash\*/(.*)/\*keyHash\*/" replace="${map.keyHash}"/>
 
586
            <replaceregex pattern="/\*null\*/-1/\*null\*/" replace="${map.null}"/>
 
587
        </filterchain>
 
588
        <!-- no clue why we have to do this twice... otherwise it will only replace one token per line -->
 
589
        <filterchain>
 
590
            <replaceregex pattern="/\*value\*/int/\*value\*/" replace="${map.value}"/>
 
591
        </filterchain>
 
592
    </copy>
 
593
  </target>
 
594
 
 
595
  <target name="generate-primitive-stacks">
 
596
 
 
597
    <!-- IntegerStack -->
 
598
    <antcall target="create-pstack" inheritrefs="true">
 
599
        <param name="pstack.name" value="IntegerStack"/>
 
600
        <param name="pstack.testname" value="TestIntegerStack01"/>
 
601
        <param name="pstack.value" value="int"/>
 
602
        <param name="pstack.value2" value="IntBuffer"/>
 
603
    </antcall>
 
604
 
 
605
  </target>
 
606
 
 
607
  <target name="create-pstack">
 
608
    <copy file="${src.java}/com/jogamp/common/util/FloatStack.java"
 
609
        tofile="${src.generated.java}/com/jogamp/common/util/${pstack.name}.java" overwrite="true">
 
610
        <filterchain>
 
611
            <replaceregex pattern="FloatStack" replace="${pstack.name}"/>
 
612
            <replaceregex pattern="@see ${pstack.name}" replace="@see FloatStack"/>
 
613
            <replaceregex pattern="/\*value\*/float/\*value\*/" replace="${pstack.value}"/>
 
614
            <replaceregex pattern="/\*value2\*/FloatBuffer/\*value2\*/" replace="${pstack.value2}"/>
 
615
        </filterchain>
 
616
    </copy>
 
617
    <mkdir dir="${gluegen.root}/${rootrel.build}/test/build/gensrc/classes"/>
 
618
    <copy file="${gluegen.root}/src/junit/com/jogamp/common/util/TestFloatStack01.java"
 
619
        tofile="${gluegen.root}/${rootrel.build}/test/build/gensrc/classes/com/jogamp/common/util/${pstack.testname}.java" overwrite="true">
 
620
        <filterchain>
 
621
            <replaceregex pattern="FloatStack" replace="${pstack.name}"/>
 
622
            <replaceregex pattern="TestFloatStack01" replace="${pstack.testname}"/>
 
623
            <replaceregex pattern="@see ${pstack.name}" replace="@see FloatStack"/>
 
624
            <replaceregex pattern="/\*value\*/float/\*value\*/" replace="${pstack.value}"/>
 
625
            <replaceregex pattern="/\*value2\*/FloatBuffer/\*value2\*/" replace="${pstack.value2}"/>
 
626
        </filterchain>
 
627
    </copy>
 
628
  </target>
 
629
 
 
630
  <target name="gluegen.build.check.java" depends="init">
 
631
      <uptodate property="gluegen.build.skip.java1">
 
632
        <srcfiles dir= "."            includes="*.xml"/>
 
633
        <srcfiles dir= "${src.java}"  includes="**"/>
 
634
        <srcfiles dir= "${c.grammar}" includes="**/*.g"/>
 
635
        <srcfiles dir= "${j.grammar}" includes="**/*.g"/>
 
636
        <mapper type="merge" to="${build}/gluegen.jar"/>
 
637
      </uptodate>
 
638
      <uptodate property="gluegen.build.skip.java2">
 
639
        <srcfiles dir= "."            includes="*.xml"/>
 
640
        <srcfiles dir= "${src.java}"  includes="**"/>
 
641
        <srcfiles dir= "${c.grammar}" includes="**/*.g"/>
 
642
        <srcfiles dir= "${j.grammar}" includes="**/*.g"/>
 
643
        <mapper type="merge" to="${build}/gluegen-rt.jar"/>
 
644
      </uptodate>
 
645
      <condition property="gluegen.build.skip.java" value="true">
 
646
        <or>
 
647
          <isset property="gluegen.build.skip.java1"/>
 
648
          <isset property="gluegen.build.skip.java2"/>
 
649
        </or>
 
650
      </condition>
 
651
  </target>
 
652
 
 
653
  <target name="gluegen.build.javase">
 
654
    <!-- Because ANTLR looks for importVocab files in the current
 
655
         working directory, it likes to have all of its files,
 
656
         including supergrammars, in one place, so copy all of the
 
657
         grammars to the output directory up front so we don't put
 
658
         temporary files into the source tree -->
 
659
    <mkdir dir="${generated.java.from.c.grammar}" />
 
660
    <copy todir="${generated.java.from.c.grammar}">
 
661
      <fileset dir="${c.grammar}">
 
662
        <include name="*.g" />
 
663
      </fileset>
 
664
    </copy>
 
665
    <mkdir dir="${generated.java.from.j.grammar}" />
 
666
    <copy todir="${generated.java.from.j.grammar}">
 
667
      <fileset dir="${j.grammar}">
 
668
        <include name="*.g" />
 
669
      </fileset>
 
670
    </copy>
 
671
 
 
672
    <!-- Generate the Java files from the C grammar using ANTLR. -->
 
673
    <antcall target="generate.grammar"  inheritRefs="true">
 
674
      <param name="output.dir" value="${generated.java.from.c.grammar}" />
 
675
      <param name="target" value="StdCParser.g" />
 
676
    </antcall>
 
677
    <antcall target="generate.c.grammar.glib"  inheritRefs="true">
 
678
      <param name="output.dir" value="${generated.java.from.c.grammar}" />
 
679
      <param name="target" value="GnuCParser.g" />
 
680
      <param name="glib" value="StdCParser.g" />
 
681
    </antcall>
 
682
    <antcall target="generate.grammar"  inheritRefs="true">
 
683
      <param name="output.dir" value="${generated.java.from.c.grammar}" />
 
684
      <param name="target" value="GnuCTreeParser.g" />
 
685
    </antcall>
 
686
    <antcall target="generate.c.grammar.glib"  inheritRefs="true">
 
687
      <param name="output.dir" value="${generated.java.from.c.grammar}" />
 
688
      <param name="target" value="GnuCEmitter.g" />
 
689
      <param name="glib" value="GnuCTreeParser.g" />
 
690
    </antcall>
 
691
    <antcall target="generate.c.grammar.glib"  inheritRefs="true">
 
692
      <param name="output.dir" value="${generated.java.from.c.grammar}" />
 
693
      <param name="target" value="HeaderParser.g" />
 
694
      <param name="glib" value="GnuCTreeParser.g" />
 
695
    </antcall>
 
696
    <antcall target="generate.grammar"  inheritRefs="true">
 
697
      <param name="output.dir" value="${generated.java.from.j.grammar}" />
 
698
      <param name="target" value="JavaParser.g" />
 
699
    </antcall>
 
700
 
 
701
    <!-- Build GlueGen using the generated Java files along with the
 
702
      - original source. -->
 
703
 
 
704
    <!--compile gluegen-rt first-->
 
705
    <javac destdir="${classes}"
 
706
           includeAntRuntime="false"
 
707
           includes="${gluegen-rt.classes} ${jogamp.common.classes}"
 
708
           excludes="${gluegen.excludes.all} ${java.part.android}"
 
709
           memoryMaximumSize="${javac.memorymax}"
 
710
           encoding="UTF-8"
 
711
           source="${target.sourcelevel}" 
 
712
           target="${target.targetlevel}" 
 
713
           bootclasspath="${target.rt.jar}"
 
714
           debug="${javacdebug}" debuglevel="${javacdebuglevel}">
 
715
      <src path="${src.java}" />
 
716
      <src path="${src.generated.java}" />
 
717
      <classpath refid="cc_gluegen.classpath" />
 
718
    </javac>
 
719
 
 
720
    <!--compile gluegen (compile time) -->
 
721
    <javac destdir="${classes}"
 
722
           includeAntRuntime="true"
 
723
           excludes="${gluegen.excludes.all} ${gluegen-rt.classes} ${java.part.android}"
 
724
           memoryMaximumSize="${javac.memorymax}"
 
725
           encoding="UTF-8"
 
726
           source="${host.sourcelevel}" 
 
727
           target="${host.targetlevel}" 
 
728
           bootclasspath="${host.rt.jar}"
 
729
           debug="${javacdebug}" debuglevel="${javacdebuglevel}">
 
730
      <src path="${src.java}" />
 
731
      <src path="${src.generated.java}" />
 
732
      <classpath refid="cc_gluegen.classpath" />
 
733
    </javac>
 
734
 
 
735
    <copy file="Manifest"
 
736
          tofile="${build}/Manifest.temp"
 
737
          overwrite="true">
 
738
        <filterset>
 
739
            <filter token="VERSION" value="${jogamp.version}"/>
 
740
            <filter token="BUILD_VERSION" value="${gluegen.version}"/>
 
741
            <filter token="SCM_BRANCH" value="${gluegen.build.branch}"/>
 
742
            <filter token="SCM_COMMIT" value="${gluegen.build.commit}"/>
 
743
            <filter token="BASEVERSION" value="${jogamp.version.base}"/>
 
744
            <filter token="JAR_CODEBASE_TAG" value="${jogamp.jar.codebase}"/>
 
745
        </filterset>
 
746
    </copy>
 
747
 
 
748
    <!-- Build gluegen.jar. -->
 
749
    <jar destfile="${build}/gluegen.jar" manifest="${build}/Manifest.temp">
 
750
      <service type="javax.annotation.processing.Processor">
 
751
        <provider classname="com.jogamp.gluegen.structgen.CStructAnnotationProcessor"/>
 
752
      </service>
 
753
      <fileset dir="${classes}">
 
754
        <include name="**/*.class" />
 
755
        <exclude name="${jogamp-android-launcher.classes}" />
 
756
        <exclude name="${java.part.android}" />
 
757
      </fileset>
 
758
      <fileset dir="resources/assets">
 
759
        <include name="**" />
 
760
      </fileset>
 
761
    </jar>
 
762
 
 
763
    <copy file="Manifest-rt"
 
764
          tofile="${build}/Manifest-rt.temp"
 
765
          overwrite="true">
 
766
        <filterset>
 
767
            <filter token="VERSION" value="${jogamp.version}"/>
 
768
            <filter token="BUILD_VERSION" value="${gluegen.version}"/>
 
769
            <filter token="SCM_BRANCH" value="${gluegen.build.branch}"/>
 
770
            <filter token="SCM_COMMIT" value="${gluegen.build.commit}"/>
 
771
            <filter token="BASEVERSION" value="${jogamp.version.base}"/>
 
772
            <filter token="JAR_CODEBASE_TAG" value="${jogamp.jar.codebase}"/>
 
773
        </filterset>
 
774
    </copy>
 
775
 
 
776
    <copy file="Manifest-rt-natives"
 
777
          tofile="${build}/Manifest-rt-natives.temp"
 
778
          overwrite="true">
 
779
        <filterset>
 
780
            <filter token="VERSION" value="${jogamp.version}"/>
 
781
            <filter token="BUILD_VERSION" value="${gluegen.version}"/>
 
782
            <filter token="SCM_BRANCH" value="${gluegen.build.branch}"/>
 
783
            <filter token="SCM_COMMIT" value="${gluegen.build.commit}"/>
 
784
            <filter token="BASEVERSION" value="${jogamp.version.base}"/>
 
785
            <filter token="JAR_CODEBASE_TAG" value="${jogamp.jar.codebase}"/>
 
786
        </filterset>
 
787
    </copy>
 
788
 
 
789
    <!-- Build gluegen-rt.jar. -->
 
790
    <jar destfile="${build}/gluegen-rt.jar" manifest="${build}/Manifest-rt.temp">
 
791
      <fileset dir="${classes}">
 
792
        <include name="com/jogamp/gluegen/runtime/*.class" />
 
793
        <include name="com/jogamp/common/**" />
 
794
        <include name="jogamp/common/**" />
 
795
        <exclude name="${jogamp-android-launcher.classes}" />
 
796
        <exclude name="${java.part.android}" />
 
797
      </fileset>
 
798
      <fileset dir="resources/assets">
 
799
        <include name="**" />
 
800
      </fileset>
 
801
    </jar>
 
802
 
 
803
    <!-- Copy antlr.jar into build directory for convenience so
 
804
         gluegen.jar can be run via "java -jar". antlr.jar is
 
805
         referenced via a Class-Path entry in the Manifest of
 
806
         gluegen.jar. -->
 
807
    <copy file="${antlr.jar}" todir="${build}" />
 
808
    
 
809
    <!-- copy a jnlp with empty codebase into build folder for local testing 
 
810
         overwrite property in gluegen.proerpties if desired             -->
 
811
    <property name="gluegen.jnlp.codebase" value=""/>
 
812
    
 
813
    <copy file="${gluegen.root}/jnlp-files/gluegen-rt.jnlp" todir="${build}">
 
814
        <filterchain>
 
815
            <replacestring from="GLUEGEN_CODEBASE_TAG" to="${gluegen.jnlp.codebase}"/>
 
816
        </filterchain>
 
817
    </copy>
 
818
  </target>
 
819
 
 
820
  <target name="gluegen.build.android" if="android-jars.available">
 
821
    <!--compile gluegen-rt-android first-->
 
822
    <javac destdir="${classes}"
 
823
           includeAntRuntime="false"
 
824
           includes="${gluegen-rt.classes} ${jogamp.common.classes}"
 
825
           excludes="${gluegen.excludes.all}"
 
826
           memoryMaximumSize="${javac.memorymax}"
 
827
           encoding="UTF-8"
 
828
           source="${target.sourcelevel}" 
 
829
           target="${target.targetlevel}" 
 
830
           bootclasspath="${target.rt.jar}"
 
831
           debug="${javacdebug}" debuglevel="${javacdebuglevel}">
 
832
      <src path="${src.java}" />
 
833
      <src path="${src.generated.java}" />
 
834
      <classpath refid="cc_gluegen_android.classpath" />
 
835
    </javac>
 
836
 
 
837
    <copy file="Manifest-rt-android"
 
838
          tofile="${build}/Manifest-rt-android.temp"
 
839
          overwrite="true">
 
840
        <filterset>
 
841
            <filter token="VERSION" value="${jogamp.version}"/>
 
842
            <filter token="BUILD_VERSION" value="${gluegen.version}"/>
 
843
            <filter token="SCM_BRANCH" value="${gluegen.build.branch}"/>
 
844
            <filter token="SCM_COMMIT" value="${gluegen.build.commit}"/>
 
845
            <filter token="BASEVERSION" value="${jogamp.version.base}"/>
 
846
            <filter token="JAR_CODEBASE_TAG" value="${jogamp.jar.codebase}"/>
 
847
        </filterset>
 
848
    </copy>
 
849
 
 
850
    <!-- Build gluegen-rt-android.jar. -->
 
851
    <jar destfile="${build}/gluegen-rt-android.jar" manifest="${build}/Manifest-rt-android.temp">
 
852
      <fileset dir="${classes}">
 
853
        <include name="com/jogamp/gluegen/runtime/*.class" />
 
854
        <include name="com/jogamp/common/**" />
 
855
        <include name="jogamp/common/**" />
 
856
        <include name="${java.part.android}" />
 
857
        <exclude name="${java.part.awt}" />
 
858
        <exclude name="${jogamp-android-launcher.classes}" />
 
859
      </fileset>
 
860
      <fileset dir="resources/assets">
 
861
        <include name="**" />
 
862
      </fileset>
 
863
    </jar>
 
864
  </target>
 
865
  
 
866
  <target name="gluegen.build.java" depends="gluegen.cpptasks.detect.os,gluegen.build.check.java" unless="gluegen.build.skip.java">
 
867
    <antcall target="generate-hash-maps"        inheritRefs="true"/>
 
868
    <antcall target="generate-primitive-stacks" inheritRefs="true"/>
 
869
    <antcall target="gluegen.build.javase"      inheritRefs="true"/>
 
870
    <antcall target="gluegen.build.android"     inheritRefs="true"/>
 
871
  </target>
 
872
 
 
873
  <target name="gluegen.build.check.android-launcher" depends="init">
 
874
      <uptodate property="gluegen.build.skip.android-launcher">
 
875
        <srcfiles dir= "."            includes="*.xml"/>
 
876
        <srcfiles dir= "resources/android" includes="**/*.xml"/>
 
877
        <srcfiles dir= "${src.java}/jogamp/android/launcher"  includes="**"/>
 
878
        <mapper type="merge" to="${build}/jogamp-android-launcher.jar"/>
 
879
      </uptodate>
 
880
  </target>
 
881
 
 
882
  <target name="android-launcher.build" depends="gluegen.cpptasks.detect.os,gluegen.build.check.android-launcher" if="android-jars.available" unless="gluegen.build.skip.android-launcher">
 
883
    <javac destdir="${classes}"
 
884
           includeAntRuntime="false"
 
885
           includes="${jogamp-android-launcher.classes}"
 
886
           excludes="${jogamp.common.classes}"
 
887
           memoryMaximumSize="${javac.memorymax}"
 
888
           encoding="UTF-8"
 
889
           source="${target.sourcelevel}" 
 
890
           target="${target.targetlevel}" 
 
891
           bootclasspath="${target.rt.jar}"
 
892
           debug="${javacdebug}" debuglevel="${javacdebuglevel}">
 
893
      <src path="${src.java}" />
 
894
      <classpath refid="android.classpath" />
 
895
    </javac>
 
896
 
 
897
    <copy file="Manifest-android-launcher"
 
898
          tofile="${build}/Manifest-android-launcher.temp"
 
899
          overwrite="true">
 
900
        <filterset>
 
901
            <filter token="VERSION" value="${jogamp.version}"/>
 
902
            <filter token="BUILD_VERSION" value="${gluegen.version}"/>
 
903
            <filter token="SCM_BRANCH" value="${gluegen.build.branch}"/>
 
904
            <filter token="SCM_COMMIT" value="${gluegen.build.commit}"/>
 
905
            <filter token="BASEVERSION" value="${jogamp.version.base}"/>
 
906
            <filter token="JAR_CODEBASE_TAG" value="${jogamp.jar.codebase}"/>
 
907
        </filterset>
 
908
    </copy>
 
909
 
 
910
    <jar destfile="${build}/jogamp-android-launcher.jar" manifest="${build}/Manifest-android-launcher.temp">
 
911
      <fileset dir="${classes}">
 
912
        <include name="${jogamp-android-launcher.classes}" />
 
913
      </fileset>
 
914
    </jar>
 
915
  </target>
 
916
 
 
917
  <target name="android-launcher.package" depends="android-launcher.build" if="isAndroid" unless="gluegen.build.skip.android-launcher">
 
918
    <aapt.signed 
 
919
        assetsdir="resources/assets-launcher"
 
920
        jarbuilddir="${build}"
 
921
        jarbasename="jogamp-android-launcher"
 
922
        nativebuilddir="${build}"
 
923
        nativebasename="non-existing"
 
924
        androidmanifest.path="resources/android/AndroidManifest-Launcher.xml"
 
925
        androidresources.path="resources/android/res"
 
926
        jarmanifest.path="${build}/Manifest-android-launcher.temp"
 
927
        version.code="${jogamp.version.int}"
 
928
        version.name="${jogamp.version}"
 
929
      />
 
930
  </target>
 
931
 
 
932
  <target name="gluegen.build.check.aapt" depends="init">
 
933
      <uptodate property="gluegen.build.skip.aapt">
 
934
        <srcfiles dir= "."                includes="*.xml"/>
 
935
        <srcfiles dir= "${src.java}"      includes="**"/>
 
936
        <srcfiles dir= "${src.generated}" includes="**"/>
 
937
        <mapper type="merge" to="${build}/gluegen-rt-android-${android.abi}.apk"/>
 
938
      </uptodate>
 
939
  </target>
 
940
 
 
941
  <target name="android.package" depends="gluegen.cpptasks.detect.os,gluegen.build.check.aapt" if="isAndroid" unless="gluegen.build.skip.aapt" >
 
942
 
 
943
    <aapt.signed 
 
944
        assetsdir="resources/assets"
 
945
        jarbuilddir="${build}"
 
946
        jarbasename="gluegen-rt-android"
 
947
        nativebuilddir="${gluegen.lib.dir}"
 
948
        nativebasename="gluegen-rt"
 
949
        android.abi="${android.abi}"
 
950
        androidmanifest.path="resources/android/AndroidManifest-Runtime.xml"
 
951
        androidresources.path="resources/android/res"
 
952
        jarmanifest.path="${build}/Manifest-rt-android.temp"
 
953
        version.code="${jogamp.version.int}"
 
954
        version.name="${jogamp.version}"
 
955
      />
 
956
  </target>
 
957
 
 
958
  <target name="base.compile" description="Base compile ensuring valid build results w/o tampering the artifacts.properties" 
 
959
                              depends="init, android-launcher.package, gluegen.build.java, gluegen.build.c" />
 
960
 
 
961
  <target name="all.no_junit" description="Release build" depends="init, base.compile, tag.build, android.package, developer-zip-archive" />
 
962
  <target name="all" description="Release build" depends="init, base.compile, tag.build, junit.compile, android.package, developer-zip-archive" />
 
963
 
 
964
  <target name="all.debug" description="Debug build" depends="init.debug, base.compile, tag.build, junit.compile, developer-zip-archive" />
 
965
 
 
966
  <target name="all.ide" description="Debug IDE build including all junit tests, but don't tag the build or create archives" depends="init.debug, base.compile, tag.build, junit.compile" />
 
967
 
 
968
  <target name="clean" depends="init">
 
969
    <delete includeEmptyDirs="true">
 
970
      <fileset dir="${build}" />
 
971
    </delete>
 
972
  </target>    
 
973
 
 
974
  <target name="tag.build" depends="init">
 
975
    <echo message='gluegen.build.number=${gluegen.build.number}${line.separator}' file="${build}/artifact.properties"/>
 
976
    <echo message='gluegen.build.id=${gluegen.build.id}${line.separator}'         file="${build}/artifact.properties" append="true"/>
 
977
    <echo message='gluegen.build.branch=${gluegen.build.branch}${line.separator}' file="${build}/artifact.properties" append="true"/>
 
978
    <echo message='gluegen.build.commit=${gluegen.build.commit}${line.separator}' file="${build}/artifact.properties" append="true"/>
 
979
  </target>
 
980
 
 
981
  <target name="junit.compile" depends="init">
 
982
    <ant antfile="build-test.xml" target="junit.compile"/>
 
983
  </target>
 
984
 
 
985
  <target name="junit.run" depends="init,junit.compile">
 
986
    <ant antfile="build-test.xml" target="junit.run"/>
 
987
  </target>
 
988
 
 
989
  <target name="javadoc" depends="init">
 
990
    <!-- Build the general public Javadoc in the target folder hierarchy javadoc/gluegen/javadoc -->
 
991
    <delete dir="${javadoc.gluegen.path}" includeEmptyDirs="true" quiet="true" failonerror="false" />
 
992
    <mkdir dir="${javadoc.gluegen.path}" />
 
993
    <javadoc packagenames="com.jogamp.*"
 
994
             sourcepath="${src.java};${src.generated.java}"
 
995
             destdir="${javadoc.gluegen.path}" windowtitle="GlueGen Runtime Documentation"
 
996
             overview="../src/java/com/jogamp/gluegen/package.html"
 
997
             encoding="UTF-8"
 
998
             source="${target.sourcelevel}"
 
999
             maxmemory="${javac.memorymax}"
 
1000
             stylesheetfile="doc/javadoc/stylesheet.css">
 
1001
        <classpath path="${classes}"/>
 
1002
        <link offline="true" href="${javadoc.link}" packagelistLoc="142-packages" />
 
1003
    </javadoc>
 
1004
    <copy todir="${javadoc.gluegen.path}/resources" overwrite="true">
 
1005
        <fileset dir="doc/javadoc/resources" includes="*" />
 
1006
    </copy>
 
1007
<!--    <archive.7z destfile="${build}/javadoc.7z"
 
1008
                basedir="${javadoc.root.path}"
 
1009
                includes="gluegen/**" />-->
 
1010
  </target>
 
1011
 
 
1012
    <!-- ================================================================== -->
 
1013
    <!--
 
1014
       - Build the per-platform binary zip archive for developers.
 
1015
       - This must be called after all of the build targets complete.
 
1016
      -->
 
1017
 
 
1018
    <target name="developer-src-zip" depends="init">
 
1019
        <!--delete includeEmptyDirs="true" quiet="true" failonerror="false">
 
1020
            <fileset dir="${build}" includes="gluegen-java-src.zip" />
 
1021
        </delete-->
 
1022
        <zip destfile="${build}/gluegen-java-src.zip" level="0">
 
1023
            <fileset dir="${src.java}"/>
 
1024
            <fileset dir="${build}/gensrc/java"/>
 
1025
        </zip>
 
1026
    </target>
 
1027
 
 
1028
    <target name="developer-zip-archive" depends="init,developer-src-zip" if="build.archiveon">
 
1029
        <delete includeEmptyDirs="true" quiet="true" dir="${archive}" failonerror="false" />
 
1030
        <mkdir dir="${archive}" />
 
1031
        <copy file="${build}/artifact.properties" todir="${archive}"/>
 
1032
        <copy file="../LICENSE.txt"    todir="${archive}" />
 
1033
        <mkdir dir="${archive}/jar" />
 
1034
        <copy todir="${archive}/jar">
 
1035
            <fileset dir="${build}" includes="gluegen*.jar"/>
 
1036
            <fileset dir="${build}" includes="*.apk"/>
 
1037
        </copy>
 
1038
        <mkdir dir="${archive}/lib" />
 
1039
        <copy todir="${archive}/lib">
 
1040
            <fileset dir="${build}/obj" includes="*${native.library.suffix}"/>
 
1041
        </copy>
 
1042
        <mkdir dir="${archive}/jnlp-files" />
 
1043
        <copy todir="${archive}/jnlp-files">
 
1044
            <fileset dir="${project.root}/jnlp-files" includes="*" />
 
1045
        </copy>
 
1046
        <copy todir="${archive}" file="${build}/gluegen-java-src.zip"/>
 
1047
<!--        <archive.7z destfile="${build}/${archive.name}.7z"
 
1048
             basedir="${build}"
 
1049
             includes="${archive.name}/**" />-->
 
1050
        <!-- Clean up after ourselves -->
 
1051
        <delete includeEmptyDirs="true" quiet="true" dir="${archive}" failonerror="false" />
 
1052
    </target>
 
1053
 
 
1054
        <!-- Put  the files created by target gluegen.build from
 
1055
         build directory to maven repository, local or remote
 
1056
         (targets maven.install and maven.deploy.snapshot respectively)-->
 
1057
    
 
1058
    <import file="maven-common.xml" />
 
1059
 
 
1060
    <target name="maven.prepare.pom">
 
1061
        <copy file="pom-template.xml" tofile="${build}/pom-${artifactId}.xml" overwrite="true">
 
1062
            <filterset>
 
1063
                <filter token="ARTIFACTID" value="${artifactId}"/>
 
1064
                <filter token="VERSION" value="${maven.artifacts.version}"/>
 
1065
                <filter token="DESCRIPTION" value="${description}"/>
 
1066
                <filter token="DEPENDENCIES" value=""/>
 
1067
            </filterset>
 
1068
        </copy>
 
1069
    </target>
 
1070
 
 
1071
    <target name="maven.prepare.native.pom">
 
1072
        <loadfile srcfile="pom-rt-dependency.xml" property="maven.dependencies.section"/>
 
1073
        <copy file="pom-template.xml" tofile="${build}/pom-${artifactId}-${os.and.arch}.xml" overwrite="true">
 
1074
            <filterchain description="Put in the dependencies section, then replace tokens">
 
1075
                <replacetokens>
 
1076
                    <token key="DEPENDENCIES" value="${maven.dependencies.section}"/>
 
1077
                </replacetokens>
 
1078
                <replacetokens>
 
1079
                    <token key="ARTIFACTID" value="${artifactId}"/>
 
1080
                    <token key="VERSION" value="${maven.artifacts.version}"/>
 
1081
                    <token key="DESCRIPTION" value="${description}"/>
 
1082
                </replacetokens>
 
1083
            </filterchain>
 
1084
        </copy>
 
1085
    </target>
 
1086
 
 
1087
    <target name="maven.install.artifact">
 
1088
        <antcall target="maven.prepare.pom" inheritall="true"/>
 
1089
        <exec executable="mvn" dir="${build}">
 
1090
            <arg value="install:install-file"/>
 
1091
            <arg value="-Dfile=${artifactId}.jar"/>
 
1092
            <arg value="-DpomFile=pom-${artifactId}.xml"/>
 
1093
            <arg value="-DcreateChecksum=true"/>
 
1094
        </exec>
 
1095
    </target>
 
1096
 
 
1097
 
 
1098
    <target name="maven.install.native.artifact">
 
1099
        <antcall target="maven.prepare.native.pom" inheritall="true"/>
 
1100
        <exec executable="mvn" dir="${build}">
 
1101
            <arg value="install:install-file"/>
 
1102
            <arg value="-Dfile=${artifactId}-${os.and.arch}.jar"/>
 
1103
            <arg value="-DpomFile=pom-${artifactId}-${os.and.arch}.xml"/>
 
1104
            <arg value="-DcreateChecksum=true"/>
 
1105
            <arg value="-Dclassifier=${os.and.arch}"/>
 
1106
        </exec>
 
1107
    </target>
 
1108
 
 
1109
    <target name="maven.deploy.artifact">
 
1110
        <antcall target="maven.prepare.pom" inheritall="true"/>
 
1111
        <exec executable="mvn" dir="${build}">
 
1112
            <arg value="deploy:deploy-file"/>
 
1113
            <arg value="-DrepositoryId=sonatype-nexus-snapshots"/>
 
1114
            <arg value="-Durl=https://oss.sonatype.org/content/repositories/snapshots/"/>
 
1115
 
 
1116
            <arg value="-Dfile=${artifactId}.jar"/>
 
1117
            <arg value="-DpomFile=pom-${artifactId}.xml"/>
 
1118
            <arg value="-DcreateChecksum=true"/>
 
1119
        </exec>
 
1120
    </target>
 
1121
 
 
1122
    <target name="maven.deploy.native.artifact">
 
1123
        <antcall target="maven.prepare.native.pom" inheritall="true"/>
 
1124
        <exec executable="mvn" dir="${build}">
 
1125
            <arg value="deploy:deploy-file"/>
 
1126
            <arg value="-DrepositoryId=sonatype-nexus-snapshots"/>
 
1127
            <arg value="-Durl=https://oss.sonatype.org/content/repositories/snapshots/"/>
 
1128
 
 
1129
            <arg value="-Dfile=${artifactId}-${os.and.arch}.jar"/>
 
1130
            <arg value="-DpomFile=pom-${artifactId}-${os.and.arch}.xml"/>
 
1131
            <arg value="-DcreateChecksum=true"/>
 
1132
            <arg value="-Dclassifier=${os.and.arch}"/>
 
1133
        </exec>
 
1134
    </target>
 
1135
 
 
1136
    <target name="maven.antcalls">
 
1137
        <antcall target="maven.${mvn.task}.artifact" inheritall="true">
 
1138
            <param name="artifactId" value="gluegen"/>
 
1139
            <param name="description" value="GlueGen - JNI Glue Code Generator"/>
 
1140
        </antcall>
 
1141
        <antcall target="maven.${mvn.task}.artifact" inheritall="true">
 
1142
            <param name="artifactId" value="gluegen-rt"/>
 
1143
            <param name="description" value="GlueGen runtime"/>
 
1144
        </antcall>
 
1145
        <antcall target="maven.${mvn.task}.native.artifact" inheritall="true">
 
1146
            <param name="artifactId" value="gluegen-rt-natives"/>
 
1147
            <param name="description" value="GlueGen runtime native libraries for ${os.and.arch}"/>
 
1148
        </antcall>
 
1149
    </target>
 
1150
 
 
1151
    <target name="maven.install" depends="init, base.compile, tag.build">
 
1152
        <property name="maven.artifacts.version" value="${jogamp.version.base}"/>
 
1153
        <antcall target="maven.antcalls" inheritall="true">
 
1154
            <param name="mvn.task" value="install"/>
 
1155
        </antcall>
 
1156
    </target>
 
1157
 
 
1158
    <target name="maven.deploy.snapshot" depends="init, base.compile, tag.build">
 
1159
        <property name="maven.artifacts.version" value="${jogamp.version.base}-SNAPSHOT"/>
 
1160
        <antcall target="maven.antcalls" inheritall="true">
 
1161
            <param name="mvn.task" value="deploy"/>
 
1162
        </antcall>
 
1163
    </target>
 
1164
 
 
1165
</project>