summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2014-01-25 15:03:04 +0100
committerSven Gothel <[email protected]>2014-01-25 15:03:04 +0100
commitf51d6456ab2196bf8ce7d6b3c7ac6d71e9e0108b (patch)
tree27f793cb02a09b4735b5b379dc9ae18e8df43ee5
parent1bc4f882be2c8129521b1110e52bcda9c232f8f1 (diff)
parent9ecc606bce374ea093c6321f2d4921b5019a0b18 (diff)
Merge remote-tracking branch 'wwalker/bug_884_replace_netbeans_build_with_jogamp_standard_build'
-rw-r--r--.classpath16
-rw-r--r--.externalToolBuilders/jocl-ant.launch9
-rw-r--r--.gitignore4
-rw-r--r--.project2
-rw-r--r--build.xml2
-rw-r--r--make/build-test.xml411
-rw-r--r--make/build.xml897
-rw-r--r--make/joclversion19
-rw-r--r--make/joclversion-test14
-rw-r--r--make/joclversion-test-android14
-rw-r--r--make/resources/android/AndroidManifest-jocl.xml (renamed from resources/android/AndroidManifest-jocl.xml)0
-rw-r--r--make/resources/android/res-jocl/drawable-hdpi/icon.png (renamed from resources/android/res-jocl/drawable-hdpi/icon.png)bin2516 -> 2516 bytes
-rw-r--r--make/resources/android/res-jocl/drawable-ldpi/icon.png (renamed from resources/android/res-jocl/drawable-ldpi/icon.png)bin1172 -> 1172 bytes
-rw-r--r--make/resources/android/res-jocl/drawable-mdpi/icon.png (renamed from resources/android/res-jocl/drawable-mdpi/icon.png)bin1570 -> 1570 bytes
-rw-r--r--make/resources/android/res-jocl/layout/main.xml (renamed from resources/android/res-jocl/layout/main.xml)0
-rw-r--r--make/resources/android/res-jocl/values/strings.xml (renamed from resources/android/res-jocl/values/strings.xml)0
-rw-r--r--make/resources/cl-buffer-if.cfg (renamed from resources/cl-buffer-if.cfg)0
-rw-r--r--make/resources/cl-common.cfg (renamed from resources/cl-common.cfg)0
-rw-r--r--make/resources/cl-context-if.cfg (renamed from resources/cl-context-if.cfg)0
-rw-r--r--make/resources/cl-device-if.cfg (renamed from resources/cl-device-if.cfg)0
-rw-r--r--make/resources/cl-event-if.cfg (renamed from resources/cl-event-if.cfg)0
-rw-r--r--make/resources/cl-if.cfg42
-rw-r--r--make/resources/cl-image-if.cfg (renamed from resources/cl-image-if.cfg)0
-rw-r--r--make/resources/cl-impl.cfg (renamed from resources/cl-impl.cfg)0
-rw-r--r--make/resources/cl-kernel-if.cfg (renamed from resources/cl-kernel-if.cfg)0
-rw-r--r--make/resources/cl-mem-if.cfg (renamed from resources/cl-mem-if.cfg)0
-rw-r--r--make/resources/cl-platform-if.cfg (renamed from resources/cl-platform-if.cfg)0
-rw-r--r--make/resources/cl-program-if.cfg (renamed from resources/cl-program-if.cfg)0
-rw-r--r--make/resources/cl-queue-if.cfg (renamed from resources/cl-queue-if.cfg)0
-rw-r--r--make/resources/cl-sampler-if.cfg (renamed from resources/cl-sampler-if.cfg)0
-rw-r--r--make/resources/clImplCustomCode.c (renamed from resources/clImplCustomCode.c)0
-rw-r--r--make/resources/clImplCustomCode.java (renamed from resources/clImplCustomCode.java)0
-rw-r--r--make/resources/clgl-if.cfg (renamed from resources/clgl-if.cfg)0
-rw-r--r--make/resources/createTagletProps.sh (renamed from resources/createTagletProps.sh)0
-rw-r--r--make/resources/includes/CL_orig/cl.h (renamed from resources/includes/CL_orig/cl.h)0
-rw-r--r--make/resources/includes/CL_orig/cl_ext.h (renamed from resources/includes/CL_orig/cl_ext.h)0
-rw-r--r--make/resources/includes/CL_orig/cl_gl.h (renamed from resources/includes/CL_orig/cl_gl.h)0
-rw-r--r--make/resources/includes/CL_orig/cl_gl_ext.h (renamed from resources/includes/CL_orig/cl_gl_ext.h)0
-rw-r--r--make/resources/includes/CL_orig/cl_platform.h (renamed from resources/includes/CL_orig/cl_platform.h)0
-rw-r--r--make/resources/includes/CL_orig/cl_vendor_ext.h (renamed from resources/includes/CL_orig/cl_vendor_ext.h)0
-rw-r--r--make/resources/includes/GL3/gl3.h (renamed from resources/includes/GL3/gl3.h)0
-rw-r--r--make/resources/includes/GL3/glext.h (renamed from resources/includes/GL3/glext.h)0
-rw-r--r--make/resources/native-taglet.properties (renamed from resources/native-taglet.properties)0
-rw-r--r--make/resources/opencl.h (renamed from resources/opencl.h)0
-rw-r--r--make/resources/stubs_includes/common/stddef.h (renamed from resources/stubs_includes/common/stddef.h)0
-rw-r--r--make/resources/stubs_includes/common/stdint.h (renamed from resources/stubs_includes/common/stdint.h)0
-rw-r--r--make/resources/stubs_includes/gl/gltypes.h (renamed from resources/stubs_includes/gl/gltypes.h)0
-rw-r--r--make/resources/stubs_includes/jvm/jni.h (renamed from resources/stubs_includes/jvm/jni.h)0
-rw-r--r--make/resources/stubs_includes/jvm/jni_md.h (renamed from resources/stubs_includes/jvm/jni_md.h)0
-rw-r--r--resources/cl-if.cfg42
-rw-r--r--test/com/jogamp/opencl/CLCommandQueueTest.java4
-rw-r--r--test/com/jogamp/opencl/util/concurrent/CLMultiContextTest.java3
52 files changed, 1418 insertions, 61 deletions
diff --git a/.classpath b/.classpath
index 78b0819c..ce1f300f 100644
--- a/.classpath
+++ b/.classpath
@@ -1,11 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="src" path="gensrc/java"/>
- <classpathentry kind="src" path="test"/>
+ <classpathentry kind="src" path="src">
+ <attributes>
+ <attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="jocl/build/obj"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="src" path="build/gensrc/java">
+ <attributes>
+ <attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="jocl/build/obj"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="src" output="build/test/build/classes" path="test"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry combineaccessrules="false" kind="src" path="/gluegen"/>
<classpathentry combineaccessrules="false" kind="src" path="/jogl"/>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
- <classpathentry kind="output" path="build"/>
+ <classpathentry kind="output" path="build/classes"/>
</classpath>
diff --git a/.externalToolBuilders/jocl-ant.launch b/.externalToolBuilders/jocl-ant.launch
index f6b6cd6f..445d387e 100644
--- a/.externalToolBuilders/jocl-ant.launch
+++ b/.externalToolBuilders/jocl-ant.launch
@@ -1,15 +1,14 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType">
-<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_AFTER_CLEAN_TARGETS" value="clean,"/>
-<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_MANUAL_TARGETS" value="jar,"/>
+<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_CLEAN_TARGETS" value="clean,"/>
<booleanAttribute key="org.eclipse.ant.ui.ATTR_TARGETS_UPDATED" value="true"/>
<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="true"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="jocl"/>
-<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/jocl/build.xml}"/>
-<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="full,incremental,"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/jocl/make/build.xml}"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="full,incremental,clean"/>
<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/>
-<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/jocl}"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/jocl/make}"/>
</launchConfiguration>
diff --git a/.gitignore b/.gitignore
index 2a23baac..1be4c98b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,8 +1,6 @@
build
dist
-gensrc
-resources/includes/CL
-resources/includes/OpenCL
+make/resources/includes/CL
.idea/workspace.xml
**~
nbproject/private
diff --git a/.project b/.project
index 7059a171..c2cf1c33 100644
--- a/.project
+++ b/.project
@@ -7,7 +7,7 @@
<buildSpec>
<buildCommand>
<name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
- <triggers>full,incremental,</triggers>
+ <triggers>clean,full,incremental,</triggers>
<arguments>
<dictionary>
<key>LaunchConfigHandle</key>
diff --git a/build.xml b/build.xml
index 09f64253..6a68b086 100644
--- a/build.xml
+++ b/build.xml
@@ -39,7 +39,7 @@
<property name="javac.debug" value="${javacdebug}"/>
<property name="javac.source" value="${target.sourcelevel}"/>
<property name="javac.target" value="${target.targetlevel}"/>
- <property name="javac.compilerargs" value="-bootclasspath ${target.rt.jar} -Xlint -g:${javacdebuglevel}"/>
+ <property name="javac.compilerargs" value="-bootclasspath '${target.rt.jar}' -Xlint -g:${javacdebuglevel}"/>
</target>
<!-- overwrites default target - watch out when build-impl.xml changes -->
diff --git a/make/build-test.xml b/make/build-test.xml
new file mode 100644
index 00000000..ae3c93b5
--- /dev/null
+++ b/make/build-test.xml
@@ -0,0 +1,411 @@
+<?xml version="1.0"?>
+
+<!--
+* Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*
+* -Redistribution of source code must retain the above copyright notice,
+* this list of conditions and the following disclaimer.
+*
+* -Redistribution in binary form must reproduce the above copyright notice,
+* this list of conditions and the following disclaimer in the documentation
+* and/or other materials provided with the distribution.
+*
+* Neither the name of Sun Microsystems, Inc. or the names of contributors may
+* be used to endorse or promote products derived from this software without
+* specific prior written permission.
+*
+* This software is provided "AS IS," without a warranty of any kind.
+* ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING
+* ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
+* NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MIDROSYSTEMS, INC. ("SUN") AND ITS
+* LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A
+* RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
+* IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT
+* OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR
+* PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
+* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS
+* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+*
+* You acknowledge that this software is not designed or intended for use in the
+* design, construction, operation or maintenance of any nuclear facility.
+-->
+
+<project name="JOCLTest" basedir="." default="all">
+
+ <description>JUNIT Tests JOCL</description>
+
+ <property name="gluegen.basename" value="gluegen" /> <!-- if differs, ie jenkins jobname, must be set properly first -->
+ <property name="jocl.basename" value="jocl" /> <!-- if differs, ie jenkins jobname, must be set properly first -->
+ <echo message="gluegen.basename: ${gluegen.basename}"/>
+ <echo message="jocl.basename: ${jocl.basename}"/>
+
+ <property name="ant-contrib.jar" value="${gluegen.root}/make/lib/ant-contrib-1.0b3.jar" />
+
+ <taskdef resource="net/sf/antcontrib/antlib.xml">
+ <classpath> <pathelement location="${ant-contrib.jar}"/> </classpath>
+ </taskdef>
+
+ <import file="${gluegen.root}/make/jogamp-env.xml" />
+ <import file="${gluegen.root}/make/gluegen-cpptasks.xml" />
+
+ <target name="declare.common" depends="jogamp.env.init, gluegen.cpptasks.detect.os">
+ <property name="jocl.version" value="${jogamp.version.base}-${version.timestamp}" />
+
+ <property name="project.root" value=".." />
+ <property name="build" value="${project.root}/${rootrel.build}" />
+
+ <property name="rootrel.src.test" value="test" />
+ <property name="src.test" value="${project.root}/${rootrel.src.test}" />
+
+ <property name="results.test" value="${build}/test/results" />
+ <property name="build.test" value="${build}/test/build" />
+ <property name="obj.test" value="${build.test}/obj"/>
+
+ <property name="classes.test" value="${build.test}/classes" />
+ <property name="classes.test.path" location="${classes.test}"/> <!-- absolute path -->
+
+ <property name="java.dir.test" value="com/jogamp/opencl"/>
+ <property name="java.part.test.all" value="${java.dir.test}/**"/>
+ <property name="java.part.test.android" value="${java.dir.test}/android/**"/>
+ <property name="java.dir.junit" value="${java.dir.test}"/>
+ <property name="java.dir.manual" value="${java.dir.test}/manual"/>
+
+ <property name="gluegen-rt-android.jar" value="${gluegen.build}/gluegen-rt-android.jar" />
+
+ <property name="obj.all.paths" value="${gluegen.build}/obj${path.separator}${jogl.build}/lib${path.separator}${obj}${path.separator}lib/${os.and.arch}"/>
+ <property name="classpath.test" value="${junit.jar}${path.separator}${gluegen-rt.jar}${path.separator}${jogl-all.jar}${path.separator}${build}/jocl.jar${path.separator}${build}/jocl-test.jar"/>
+ <property name="classpath.test.remote" value="${junit.jar}${path.separator}${env.TARGET_ANT_HOME}/lib/ant.jar${path.separator}${env.TARGET_ANT_HOME}/lib/ant-junit.jar${path.separator}${gluegen-rt.jar}${path.separator}${build}/jocl.jar${path.separator}${build}/jocl-test.jar"/>
+
+ <property name="test.archive.name" value="${archive.name}-test-results-${build.node.name}"/>
+
+ <property name="batchtest.timeout" value="1800000"/> <!-- 30 min -->
+
+ <mkdir dir="${classes.test}"/>
+ </target>
+
+ <target name="test.compile.javase" depends="declare.common" >
+ <javac destdir="${classes.test}"
+ excludes="${java.part.test.android}"
+ fork="yes"
+ includeantruntime="false"
+ srcdir="${src.test}"
+ classpath="${gluegen-rt.jar};${build}/jocl.jar;${junit.jar};${jogl-all.jar}"
+ memoryMaximumSize="${javac.memorymax}"
+ encoding="UTF-8"
+ source="${target.sourcelevel}"
+ target="${target.targetlevel}"
+ bootclasspath="${target.rt.jar}"
+ debug="${javacdebug}" debuglevel="${javacdebuglevel}"/>
+ <copy file="joclversion-test"
+ tofile="${build.test}/manifest-test.mf"
+ overwrite="true">
+ <filterset>
+ <filter token="VERSION" value="${jogamp.version}"/>
+ <filter token="BUILD_VERSION" value="${jocl.version}"/>
+ <filter token="SCM_BRANCH" value="${jocl.build.branch}"/>
+ <filter token="SCM_COMMIT" value="${jocl.build.commit}"/>
+ <filter token="BASEVERSION" value="${jogamp.version.base}"/>
+ </filterset>
+ </copy>
+ <jar manifest="${build.test}/manifest-test.mf" destfile="${build}/jocl-test.jar">
+ <!-- get all class files, but skip any resource files that external tools
+ might have copied into the class directory (otherwise, it's possible
+ to get the same resource file twice in the jar) -->
+ <fileset dir="${classes.test}"
+ includes="${java.part.test.all}"
+ excludes="${java.part.test.android}"/>
+ </jar>
+ </target>
+
+ <target name="test.compile.android" depends="declare.common" if="android-jars.available">
+ <!-- Perform the junit pass Java Android compile -->
+ <javac destdir="${classes.test}"
+ fork="yes"
+ includeAntRuntime="false"
+ classpath="${android.jar};${gluegen-rt-android.jar};${build}/jocl.jar;${junit.jar}"
+ memoryMaximumSize="${javac.memorymax}"
+ encoding="UTF-8"
+ source="${target.sourcelevel}"
+ target="${target.targetlevel}"
+ bootclasspath="${target.rt.jar}"
+ debug="${javacdebug}" debuglevel="${javacdebuglevel}">
+ <src path="${src.test}" />
+ </javac>
+ <copy file="joclversion-test-android"
+ tofile="${build.test}/manifest-test-android.mf"
+ overwrite="true">
+ <filterset>
+ <filter token="VERSION" value="${jogamp.version}"/>
+ <filter token="BUILD_VERSION" value="${jocl.version}"/>
+ <filter token="SCM_BRANCH" value="${jocl.build.branch}"/>
+ <filter token="SCM_COMMIT" value="${jocl.build.commit}"/>
+ <filter token="BASEVERSION" value="${jogamp.version.base}"/>
+ </filterset>
+ </copy>
+ <jar manifest="${build.test}/manifest-test-android.mf" destfile="${build}/jocl-test-android.jar" filesonly="true">
+ <!-- get all class files, but skip any resource files that external tools
+ might have copied into the class directory (otherwise, it's possible
+ to get the same resource file twice in the jar) -->
+ <fileset dir="${classes.test}"
+ includes="${java.part.test.all}"/>
+ </jar>
+ </target>
+
+ <target name="test.package.android" depends="test.compile.android" if="isAndroid">
+ <aapt.signed
+ assetsdir="resources/assets-test"
+ jarsrcdir="${src.test}"
+ jarbuilddir="${build}"
+ jarbasename="jocl-test-android"
+ nativebuilddir="../${rootrel.build}/obj"
+ nativebasename="non-existing"
+ androidmanifest.path="resources/android/AndroidManifest-test.xml"
+ androidresources.path="resources/android/res-test"
+ jarmanifest.path="${build.test}/manifest-test-android.mf"
+ version.code="${jogamp.version.int}"
+ version.name="${jogamp.version}" />
+ </target>
+
+ <target name="test.compile" depends="declare.common" unless="test.compile.skip">
+ <!-- include any resource files that tests may require -->
+ <copy todir="${classes.test}">
+ <fileset dir="${src.test}">
+ <exclude name="**/*.java"/>
+ </fileset>
+ </copy>
+ <antcall target="test.compile.javase" inheritRefs="true" inheritAll="true"/>
+ <antcall target="test.package.android" inheritRefs="true" inheritAll="true"/>
+ </target>
+
+ <target name="clean">
+ <delete dir="${build.test}"/>
+ </target>
+
+ <target name="clean.results">
+ <!-- Clean the results -->
+ <delete quiet="true">
+ <fileset dir="${results.test}" includes="**"/>
+ <fileset file="${build}/${test.archive.name}.7z"/>
+ </delete>
+ <mkdir dir="${results.test}"/>
+ </target>
+
+ <target name="junit.run.local" depends="clean.results, test.compile" unless="isCrosscompilation">
+ <junit forkmode="perTest" showoutput="true" fork="true" haltonerror="off" includeAntRuntime="true">
+ <env key="${system.env.library.path}" path="${obj.all.paths}"/>
+ <jvmarg value="${jvmDataModel.arg}"/>
+ <jvmarg value="-Djava.library.path=${obj.all.paths}"/>
+ <!--
+ <jvmarg value="-Djogamp.debug=all"/>
+ <jvmarg value="-Djogamp.debug.NativeLibrary=true"/>
+ <jvmarg value="-Djogamp.debug.NativeLibrary.Lookup=true"/>
+ <jvmarg value="-Djogamp.debug.ProcAddressHelper=true"/> -->
+ <jvmarg value="-Djocl.debug.Factory"/>
+ <batchtest todir="${results.test}">
+ <fileset dir="${classes.test}">
+ <include name="${java.dir.junit}/**/*Test.class"/>
+ </fileset>
+ <formatter usefile="false" type="plain"/>
+ <formatter usefile="true" type="xml"/>
+ </batchtest>
+ <classpath>
+ <path path="${classpath.test}"/>
+ </classpath>
+ </junit>
+ </target>
+
+ <target name="test.manual.run" depends="clean.results, test.compile">
+ <for param="test.class.path.m" keepgoing="true">
+ <!-- results in absolute path -->
+ <fileset dir="${classes.test}">
+ <include name="${java.dir.manual}/**/*Test.class"/>
+ <exclude name="**/*$$*"/>
+ </fileset>
+ <sequential>
+ <var name="test.class.path" unset="true"/>
+ <property name="test.class.path" basedir="${classes.test}" relative="true" location="@{test.class.path.m}"/>
+ <var name="test.class.fqn" unset="true"/>
+ <pathconvert property="test.class.fqn">
+ <fileset file="${classes.test}${file.separator}${test.class.path}"/>
+ <chainedmapper>
+ <globmapper from="${classes.test.path}${file.separator}*" to="*"/> <!-- rel. -->
+ <packagemapper from="*.class" to="*"/> <!-- FQCN -->
+ </chainedmapper>
+ </pathconvert>
+ <var name="test.class.result.file" value="${results.test}/TEST-${test.class.fqn}.log"/>
+ <echo message="Testing ${test.class.fqn} -- ${test.class.result.file}"/>
+ <apply dir="." executable="${java.home}/bin/java"
+ parallel="false"
+ timeout="${batchtest.timeout}"
+ vmlauncher="false"
+ relative="true"
+ failonerror="false"
+ output="${test.class.result.file}">
+ <env key="${system.env.library.path}" path="${obj.all.paths}"/>
+ <env key="CLASSPATH" value="${classpath.test}"/>
+ <arg line="${jvmDataModel.arg}"/>
+ <arg value="-Djava.library.path=${obj.all.paths}"/>
+ <!--
+ <arg line="-Djogamp.debug=all"/>
+ <arg line="-Djogamp.debug.NativeLibrary=true"/>
+ <arg line="-Djogamp.debug.NativeLibrary.Lookup=true"/>
+ <arg line="-Djogamp.debug.ProcAddressHelper=true"/> -->
+ <arg line="-Djocl.debug.Factory"/>
+ <srcfile/>
+ <mappedresources>
+ <fileset dir="${classes.test}" includes="${test.class.path}"/>
+ <packagemapper from="*.class" to="*"/>
+ </mappedresources>
+ </apply>
+ </sequential>
+ </for>
+ </target>
+
+ <target name="junit.run.remote.ssh" if="isCrosscompilation" unless="isAndroid">
+ <echo message="#! /bin/sh${line.separator}" append="false" file="${build.test}/targetcommand.sh" />
+ <echo message="${line.separator}
+rsync -av --delete --delete-after --delete-excluded \${line.separator}
+ --exclude 'build-x86*/' --exclude 'build-linux-x*/' --exclude 'build-android*/' --exclude 'build-win*/' --exclude 'build-mac*/' \${line.separator}
+ --exclude 'classes/' --exclude 'src/' --exclude '.git/' --exclude '*-java-src.zip' \${line.separator}
+ ${env.HOST_UID}@${env.HOST_IP}::${env.HOST_RSYNC_ROOT}/${jocl.basename} ${env.TARGET_ROOT} ${line.separator}
+cd ${env.TARGET_ROOT}/${jocl.basename}/${env.NODE_LABEL}/make ${line.separator}
+" append="true" file="${build.test}/targetcommand.sh" />
+
+ <for param="test.class.path.m" keepgoing="true">
+ <!-- results in absolute path -->
+ <fileset dir="${classes.test}">
+ <include name="${java.dir.junit}/**/*Test.class"/>
+ <exclude name="**/*$$*"/>
+ </fileset>
+ <sequential>
+ <var name="test.class.path" unset="true"/>
+ <property name="test.class.path" basedir="${classes.test}" relative="true" location="@{test.class.path.m}"/>
+ <var name="test.class.fqn" unset="true"/>
+ <pathconvert property="test.class.fqn">
+ <fileset file="${classes.test}${file.separator}${test.class.path}"/>
+ <chainedmapper>
+ <globmapper from="${classes.test.path}${file.separator}*" to="*"/> <!-- rel. -->
+ <packagemapper from="*.class" to="*"/> <!-- FQCN -->
+ </chainedmapper>
+ </pathconvert>
+ <var name="test.class.result.file" value="${results.test}/TEST-${test.class.fqn}.xml"/>
+ <echo message="Testing ${test.class.fqn} -- ${test.class.result.file}"/>
+ <echo message="${line.separator}
+export DISPLAY=:0.0${line.separator}
+java \${line.separator}
+${junit.run.arg0}\${line.separator}
+${junit.run.arg1}\${line.separator}
+${jvmDataModel.arg}\${line.separator}
+-cp ${classpath.test.remote}\${line.separator}
+org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner \${line.separator}
+${test.class.fqn} \${line.separator}
+filtertrace=true \${line.separator}
+haltOnError=false \${line.separator}
+haltOnFailure=false \${line.separator}
+showoutput=true \${line.separator}
+outputtoformatters=true \${line.separator}
+logfailedtests=true \${line.separator}
+logtestlistenerevents=true \${line.separator}
+formatter=org.apache.tools.ant.taskdefs.optional.junit.PlainJUnitResultFormatter \${line.separator}
+formatter=org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter,${test.class.result.file} ${line.separator}
+${line.separator}
+" append="true" file="${build.test}/targetcommand.sh" />
+ </sequential>
+ </for>
+ <exec dir="." executable="sh" logError="true" failonerror="true" failifexecutionfails="true">
+ <arg line='-x -c "
+ chmod 0755 ${build.test}/targetcommand.sh ;
+ scp ${build.test}/targetcommand.sh ${env.TARGET_UID}@${env.TARGET_IP}:${env.TARGET_ROOT}/jocl-targetcommand.sh ;
+ ssh -x ${env.TARGET_UID}@${env.TARGET_IP} ${env.TARGET_ROOT}/jocl-targetcommand.sh ;
+ scp -pr ${env.TARGET_UID}@${env.TARGET_IP}:${env.TARGET_ROOT}/${jocl.basename}/${env.NODE_LABEL}/make/${results.test}/* ${results.test}/ "'/>
+ </exec>
+ </target>
+
+ <target name="junit.run.remote.adb" if="isAndroidARMv7">
+ <echo message="#! /system/bin/sh${line.separator}" append="false" file="${build.test}/targetcommand.sh" />
+ <echo message="${line.separator}
+rsync -av --delete --delete-after --delete-excluded \${line.separator}
+ --exclude 'build-x86*/' --exclude 'build-linux*/' --exclude 'build-win*/' --exclude 'build-mac*/' \${line.separator}
+ --exclude 'classes/' --exclude 'src/' --exclude '.git/' --exclude '*-java-src.zip' \${line.separator}
+ ${env.HOST_UID}@${env.HOST_IP}::${env.HOST_RSYNC_ROOT}/${jocl.basename} ${env.TARGET_ROOT} ${line.separator}
+cd ${env.TARGET_ROOT}/${jocl.basename}/${env.NODE_LABEL}/make ${line.separator}
+export ${system.env.library.path}=/system/lib:${env.TARGET_ROOT}/${gluegen.basename}/${rootrel.build}/obj:${env.TARGET_ROOT}/${gluegen.basename}/${rootrel.build}/test/build/natives ${line.separator}
+export BOOTCLASSPATH=/system/framework/core.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/android.policy.jar:/system/framework/services.jar ${line.separator}
+" append="true" file="${build.test}/targetcommand.sh" />
+
+ <for param="test.class.path.m" keepgoing="true">
+ <!-- results in absolute path -->
+ <fileset dir="${build_t.java}">
+ <include name="${test.junit.rel}/**/*Test.class"/>
+ <exclude name="**/*$$*"/>
+ </fileset>
+ <sequential>
+ <var name="test.class.path" unset="true"/>
+ <property name="test.class.path" basedir="${build_t.java}" relative="true" location="@{test.class.path.m}"/>
+ <var name="test.class.fqn" unset="true"/>
+ <pathconvert property="test.class.fqn">
+ <fileset file="${build_t.java}${file.separator}${test.class.path}"/>
+ <chainedmapper>
+ <globmapper from="${build_t.java.path}${file.separator}*" to="*"/> <!-- rel. -->
+ <packagemapper from="*.class" to="*"/> <!-- FQCN -->
+ </chainedmapper>
+ </pathconvert>
+ <var name="test.class.result.file" value="${results}/TEST-${test.class.fqn}.xml"/>
+ <echo message="Testing ${test.class.fqn} -- ${test.class.result.file}"/>
+ <echo message="${line.separator}
+dalvikvm \${line.separator}
+-Xjnigreflimit:2000 \${line.separator}
+-cp ${junit.run.remote.apks} \${line.separator}
+-Dgluegen.root=${gluegen.root} \${line.separator}
+-Drootrel.build=${rootrel.build} \${line.separator}
+com.android.internal.util.WithFramework \${line.separator}
+org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner \${line.separator}
+${test.class.fqn} \${line.separator}
+filtertrace=true \${line.separator}
+haltOnError=false \${line.separator}
+haltOnFailure=false \${line.separator}
+showoutput=true \${line.separator}
+outputtoformatters=true \${line.separator}
+logfailedtests=true \${line.separator}
+logtestlistenerevents=true \${line.separator}
+formatter=org.apache.tools.ant.taskdefs.optional.junit.PlainJUnitResultFormatter \${line.separator}
+formatter=org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter,${test.class.result.file} ${line.separator}
+${line.separator}
+" append="true" file="${build_t}/targetcommand.sh" />
+ </sequential>
+ </for>
+ <exec dir="." executable="sh" logError="true" failonerror="true" failifexecutionfails="true">
+ <arg line='-x -c "
+ chmod 0755 ${build_t}/targetcommand.sh ;
+ adb push ${build_t}/targetcommand.sh ${env.TARGET_ROOT}/jocl-targetcommand.sh ;
+ adb shell ${env.TARGET_ROOT}/jocl-targetcommand.sh ;
+ adb pull ${env.TARGET_ROOT}/${jocl.basename}/${env.NODE_LABEL}/make/${results}/ ${results}/ "'/>
+ </exec>
+ </target>
+
+ <target name="junit.run.tests" depends="junit.run.local, junit.run.remote.ssh"/>
+
+ <target name="junit.run.if.enabled" unless="junit.is.disabled">
+ <antcall target="junit.run.tests" inheritRefs="true" inheritAll="true"/>
+ </target>
+ <target name="junit.run.if.disabled" if="junit.is.disabled">
+ <copy todir="${results.test}" file="${gluegen.root}/make/lib/TEST-com.jogamp.junit.DisabledTest.xml"/>
+ </target>
+
+ <target name="junit.run" depends="declare.common, junit.run.if.enabled, junit.run.if.disabled">
+ <antcall target="test-zip-archive" inheritRefs="true" inheritAll="true"/>
+ </target>
+
+ <target name="test.auto.run" depends="junit.run"/>
+
+ <!-- updates / create the test results zip file -->
+ <target name="test-zip-archive" depends="declare.common">
+ <archive.7z destfile="${build}/${test.archive.name}.7z"
+ basedir="${results.test}"
+ includes="**" />
+ </target>
+
+</project>
diff --git a/make/build.xml b/make/build.xml
new file mode 100644
index 00000000..887c257b
--- /dev/null
+++ b/make/build.xml
@@ -0,0 +1,897 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ - Ant build for JOCL. This build has been tested with ANT 1.8.0. The
+ - optional.jar that contains the optional ANT tasks must be in the ANT
+ - classpath (typically the ant/lib directory).
+ -
+ - A clean download of JOCL is required for this build.
+ -
+ - This build has no dependence on environment variables; the needed
+ - ones (e.g. java.home, ANT_HOME) are all set by the Ant wrapper shell
+ - script, by the virtual machine, or elsewhere. However, on all platforms,
+ - the C compiler and linker should be in the path. All other paths that
+ - need to be set are in host.properties.
+ -
+ - NOTE: because the GlueGen config files have their own relative paths
+ - which cannot be overridden by GlueGen, GlueGen MUST be run from
+ - the "make" directory. This also means that this build.xml MUST
+ - be run from the "make" directory.
+ -
+ - Public targets:
+ - all: (default; autodetects OS and chooses C compiler from jocl.properties)
+ - clean: clean all built
+ - javadoc: create the standard developer Javadoc
+ -
+ - Thanks to Rob Grzywinski and Artur Biesiadowski for the bulk of the
+ - ANT build, including the GlueGen and StaticGLInfo tasks, the building of
+ - the Java generated sources, the first and second phase Java compiles, and
+ - the building of the jar file. Thanks to Alex Radeski for the bulk of the
+ - port to the ant-contrib CPPTask framework. Thanks to Athomas Goldberg for
+ - the original OS detection code.
+ -->
+<project name="JOCL" basedir="." default="all">
+
+ <property name="project.root" value=".." />
+
+ <condition property="rootrel.build" value="build">
+ <not>
+ <isset property="rootrel.build"/>
+ </not>
+ </condition>
+ <property name="build" value="${project.root}/${rootrel.build}" />
+
+ <property name="gluegen.root" value="${project.root}/../gluegen" />
+ <property name="gluegen.build" value="${gluegen.root}/${rootrel.build}" />
+
+ <!-- This is the version of JOCL you are building -->
+ <property name="jocl.build.number" value="manual-build"/>
+ <mkdir dir="${build}" />
+ <exec dir="." executable="git" logError="true" failonerror="false" failifexecutionfails="false"
+ output="${build}/localbranch.raw">
+ <arg line="branch --no-color"/>
+ </exec>
+ <exec dir="." executable="sed" logError="true" failonerror="false" failifexecutionfails="false"
+ outputproperty="jocl.build.branch">
+ <arg line="-e '/^[^*]/d' -e 's/* \(.*\)/\1/' ${build}/localbranch.raw"/>
+ </exec>
+ <property name="jocl.build.branch" value="manual"/> <!-- fallback -->
+ <exec dir="${project.root}" executable="git" logError="true" failonerror="false" failifexecutionfails="false"
+ outputproperty="jocl.build.commit">
+ <arg line="rev-parse HEAD"/>
+ </exec>
+ <property name="jocl.build.commit" value="manual"/> <!-- fallback -->
+
+ <!-- Pull in GlueGen cpptasks build file -->
+ <import file="${gluegen.root}/make/gluegen-cpptasks.xml" />
+ <import file="${gluegen.root}/make/jogamp-archivetasks.xml" />
+ <import file="${gluegen.root}/make/jogamp-androidtasks.xml" />
+ <import file="${gluegen.root}/make/jogamp-env.xml" />
+
+ <!-- ================================================================== -->
+ <!--
+ - Load user properties which override build defaults.
+ -->
+ <target name="load.user.properties">
+ <property name="user.properties.file" value="${user.home}/jocl.properties" />
+ <property file="${user.properties.file}" />
+ <echo message="Loaded ${user.properties.file}. (optionally)" />
+
+ <property file="${user.home}/gluegen.properties" />
+ <echo message="Loaded ${user.home}/gluegen.properties." />
+ </target>
+
+ <!-- ================================================================== -->
+ <!--
+ - Declare all paths and user defined variables.
+ -->
+ <target name="init" depends="jogamp.env.init, gluegen.cpptasks.detect.os">
+
+ <property name="jocl.build.id" value="${version.timestamp}"/>
+ <property name="jocl.version" value="${jogamp.version.base}-${version.timestamp}" />
+
+ <!-- The location and name of the configuration ANT file that will
+ - validate to ensure that all user-define variables are set. -->
+ <property name="validate.user.properties" value="${make}/validate-properties.xml" />
+
+ <!-- GlueGen properties. -->
+ <!-- NOTE that these require a checked-out GlueGen workspace as a -->
+ <!-- sibling of the JOCL workspace. -->
+ <property name="gluegen.make.dir" value="${gluegen.root}/make" />
+ <property name="gluegen.build.xml" value="${gluegen.make.dir}/build.xml" />
+ <property name="gluegen.jar" value="${gluegen.build}/gluegen.jar" />
+ <property name="gluegen-rt.jar" value="${gluegen.build}/gluegen-rt.jar" />
+
+ <property name="jogl.build" value="${project.root}/../jogl/build" />
+ <property name="jogl-all.jar" value="${jogl.build}/jar/jogl-all.jar" />
+
+ <!-- Create the classpath that includes GlueGen and
+ - ANTLR. This requires the user-defined "antlr.jar"
+ - property. -->
+ <path id="gluegen.classpath">
+ <pathelement location="${gluegen.jar}" />
+ <pathelement location="${antlr.jar}" />
+ </path>
+
+ <path id="javac.classpath">
+ <pathelement location="${gluegen.jar}" />
+ <pathelement location="${jogl-all.jar}" />
+ </path>
+
+ <!-- Names of directories relative to the project root.
+ Some of these are used in FileMappers later for dependence information
+ and need exact string matching, which is why they use file.separator
+ instead of "/". -->
+ <property name="rootrel.src" value="src" />
+ <!--property name="rootrel.src.java" value="${rootrel.src}/java" /-->
+ <property name="rootrel.src.java" value="${rootrel.src}" />
+ <!---property name="rootrel.src.c" value="${rootrel.src}/native" /-->
+ <property name="rootrel.src.c" value="resources" />
+ <property name="rootrel.src.generated" value="${rootrel.build}/gensrc" />
+ <property name="rootrel.generated.java" value="${rootrel.src.generated}/classes" />
+ <property name="rootrel.generated.c.jocl" value="${rootrel.src.generated}/native" />
+ <property name="rootrel.obj" value="${rootrel.build}/obj" />
+ <property name="rootrel.obj.jocl" value="${rootrel.obj}/jocl" />
+
+ <!-- The source directories. -->
+ <property name="src" value="${project.root}/${rootrel.src}" />
+ <property name="src.c" value="${project.root}/${rootrel.src.c}" />
+ <property name="src.java" value="${project.root}/${rootrel.src.java}" />
+ <property name="build" value="${project.root}/${rootrel.build}" />
+ <property name="tempdir" value="${project.root}/build-temp" />
+ <mkdir dir="${tempdir}" />
+
+ <!-- The generated source directories. -->
+ <property name="src.generated" value="${build}/gensrc" />
+ <property name="src.generated.java" value="${src.generated}/java" />
+ <property name="src.generated.c" value="${src.generated}/native/jocl" />
+
+ <!-- The compiler output directories. -->
+ <property name="classes" value="${build}/classes" />
+ <property name="obj" value="${project.root}/${rootrel.obj}" />
+ <property name="obj.jocl" value="${project.root}/${rootrel.obj.jocl}" />
+
+ <!-- Directories used for OpenCL header file preprocessing. -->
+ <property name="etc.build.dir" value="${build}/etc" />
+ <property name="headers.orig" value="${basedir}/resources/includes/CL_orig" />
+ <property name="headers.dest" value="${basedir}/resources/includes/CL" />
+
+ <!-- The headers from which Java files are generated -->
+ <property name="config" value="${project.root}/make/resources" />
+ <property name="stub.includes" value="${config}/includes" />
+ <property name="stub.includes.opencl" value="${config}" />
+ <property name="stub.includes.dir" value="resources" /> <!-- NOTE: this MUST be relative for FileSet -->
+ <dirset id="stub.includes.fileset.all" dir=".">
+ <include name="${stub.includes.dir}/includes"/>
+ <include name="${stub.includes.dir}/stubs_includes/jvm"/>
+ <include name="${stub.includes.dir}/stubs_includes/gl"/>
+ <include name="${stub.includes.dir}/stubs_includes/common"/>
+ </dirset>
+ <fileset id="stub.includes.dependencies.fileset.1" dir="${stub.includes.dir}">
+ <include name="includes/CL/**" />
+ <include name="includes/GL3/**" />
+ </fileset>
+ <fileset id="stub.includes.dependencies.fileset.2" file="${gluegen.jar}" />
+ <fileset id="stub.includes.dependencies.fileset.3" dir=".">
+ <include name="*.cfg" />
+ <include name="*.java" />
+ <include name="*.c" />
+ </fileset>
+ <!--property name="stub.includes.gluegen.gg" value="${gluegen.root}/make/stub_includes/gluegen" /-->
+ <property name="stub.includes.gluegen.cc" value="${gluegen.root}/make/stub_includes/platform" />
+
+ <!-- The resulting jocl.jar. -->
+ <property name="jocl.jar" value="${build}/jocl.jar" />
+ <property name="jocl-android.jar" value="${build}/jocl-android.jar" />
+ <property name="jocl-android.apk" value="${build}/jocl-android-${android.abi}.apk" />
+
+ <path id="jocl_all.classpath">
+ <pathelement location="${gluegen-rt.jar}" />
+ <pathelement location="${jocl.jar}" />
+ </path>
+
+ <!-- Create the required output directories. -->
+ <mkdir dir="${src.generated.java}" />
+ <mkdir dir="${src.generated.c}" />
+ <mkdir dir="${classes}" />
+ <mkdir dir="${obj}" />
+ <mkdir dir="${obj.jocl}" />
+
+ <property name="archive.name" value="jocl-${jocl.version}-${os.and.arch}" />
+ <property name="archive" value="${build}/${archive.name}" />
+
+ <condition property="useLinuxARMv6SFOptions">
+ <and>
+ <isset property="isLinuxARMv6"/>
+ <isset property="isAbiEabiGnuArmel"/>
+ <isset property="isCrosscompilation"/>
+ </and>
+ </condition>
+ <condition property="useLinuxARMv6HFOptions">
+ <and>
+ <isset property="isLinuxARMv6"/>
+ <isset property="isAbiEabiGnuArmhf"/>
+ <isset property="isCrosscompilation"/>
+ </and>
+ </condition>
+ <condition property="isCLANG.i386">
+ <and>
+ <isset property="isCLANG"/>
+ <isset property="isI386"/>
+ </and>
+ </condition>
+ <echo message="useLinuxARMv6SFOptions ${useLinuxARMv6SFOptions}" />
+ <echo message="useLinuxARMv6HFOptions ${useLinuxARMv6HFOptions}" />
+ <condition property="enable.jdk7.features">
+ <or>
+ <equals arg1="${target.targetlevel}" arg2="1.7"/>
+ <equals arg1="${target.targetlevel}" arg2="1.8"/>
+ </or>
+ </condition>
+ <echo message="enable.jdk7.features ${enable.jdk7.features}" />
+ </target>
+
+ <!-- ================================================================== -->
+ <!-- GlueGen and BuildStaticGLInfo creation, task setup and Java file generation -->
+ <!--
+ - Build GlueGen
+ -->
+ <target name="build.gluegen" depends="init" unless="common.gluegen.build.done">
+ <property name="common.gluegen.build.done" value="true" />
+
+ <!-- Run the GlueGen build to ensure that the GlueGen ANT task
+ - has been built. -->
+ <ant antfile="${gluegen.build.xml}" dir="${gluegen.make.dir}" target="base.compile" inheritAll="false" />
+ </target>
+
+ <!-- ================================================================== -->
+ <!-- Java file generation -->
+ <!--
+ - Check to see whether we need to rebuild the generated sources.
+ -->
+
+ <target name="java.generate.check">
+ <!-- Blow away all target files if any dependencies are violated
+ (the uptodate task doesn't allow arbitrary source and target filesets but should) -->
+ <dependset>
+ <srcfileset refid="stub.includes.dependencies.fileset.1" />
+ <srcfileset refid="stub.includes.dependencies.fileset.2" />
+ <srcfileset refid="stub.includes.dependencies.fileset.3" />
+ <targetfileset dir=".">
+ <include name="${src.generated.java}/**/*.java" />
+ <include name="${src.generated.c}/**/*.c" />
+ </targetfileset>
+ </dependset>
+
+ <!-- Now check for the presence of one well-known file -->
+ <uptodate property="java.generate.skip"
+ targetfile="${src.generated.java}/com/jogamp/opencl/llb/CL.java">
+ <srcfiles refid="stub.includes.dependencies.fileset.1" />
+ <srcfiles refid="stub.includes.dependencies.fileset.2" />
+ <srcfiles refid="stub.includes.dependencies.fileset.3" />
+ </uptodate>
+ </target>
+
+ <target name="java.generate.copy2temp">
+ <copy todir="${tempdir}">
+ <fileset dir="${build}"
+ includes="gensrc/classes/**" />
+ </copy>
+ </target>
+
+ <target name="generate.jdk7.autocloseable" if="${enable.jdk7.features}">
+ <echo message="Generating JDK7+ AutoCloseable"/>
+ <copy file="${project.root}/src/com/jogamp/common/AutoCloseable.jtemplate"
+ tofile="${build}/gensrc/java/com/jogamp/common/AutoCloseable.java" overwrite="true">
+ <filterchain>
+ <replaceregex pattern="/\*extends java.lang.AutoCloseable\*/" replace="extends java.lang.AutoCloseable"/>
+ </filterchain>
+ </copy>
+ </target>
+
+ <target name="generate.jdk6.autocloseable" unless="${enable.jdk7.features}">
+ <echo message="Generating JDK6 AutoCloseable"/>
+ <copy file="${project.root}/src/com/jogamp/common/AutoCloseable.jtemplate"
+ tofile="${build}/gensrc/java/com/jogamp/common/AutoCloseable.java" overwrite="true">
+ </copy>
+ </target>
+
+ <target name="make-build-utilities" depends="init">
+
+ <!--compile build utilities-->
+ <mkdir dir="${etc.build.dir}"/>
+
+ <javac destdir="${etc.build.dir}"
+ classpath="${ant.core.lib}"
+ fork="yes"
+ includeAntRuntime="false"
+ memoryMaximumSize="${javac.memorymax}"
+ source="${target.sourcelevel}"
+ target="${target.targetlevel}"
+ bootclasspath="${target.rt.jar}"
+ debug="${javacdebug}" debuglevel="${javacdebuglevel}">
+ <src path="${basedir}/../etc/src"/>
+ </javac>
+
+ <taskdef name="update-headers" classname="com.jogamp.ant.HeaderFileDownloader" classpath="${etc.build.dir}"/>
+ <taskdef name="uncomment-function-params" classname="com.jogamp.ant.FunctionParamUncommenter" classpath="${etc.build.dir}"/>
+ </target>
+
+ <target name="update-opencl-headers" depends="make-build-utilities">
+ <property name="registry.url" value="http://www.khronos.org/registry/cl/api/1.1/"/>
+
+ <!-- download new headers from OpenCL registry if necessary -->
+ <update-headers header="${headers.orig}/cl.h" url="${registry.url}cl.h"/>
+ <update-headers header="${headers.orig}/cl_gl.h" url="${registry.url}cl_gl.h"/>
+ <update-headers header="${headers.orig}/cl_gl_ext.h" url="${registry.url}cl_gl_ext.h"/>
+ <update-headers header="${headers.orig}/cl_ext.h" url="${registry.url}cl_ext.h"/>
+ <update-headers header="${headers.orig}/cl_platform.h" url="${registry.url}cl_platform.h"/>
+ </target>
+
+ <target name="preprocess-opencl-headers" depends="make-build-utilities">
+ <mkdir dir="${headers.dest}"/>
+
+ <!--uncomment function names in c headers and copy modified files into include path-->
+ <uncomment-function-params src="${headers.orig}/cl.h" dest="${headers.dest}/cl.h"/>
+ <uncomment-function-params src="${headers.orig}/cl_gl.h" dest="${headers.dest}/cl_gl.h"/>
+
+ <!--nothing to uncomment in this headers-->
+ <copy file="${headers.orig}/cl_platform.h" toDir="${headers.dest}" overwrite="true"/>
+ <copy file="${headers.orig}/cl_ext.h" toDir="${headers.dest}" overwrite="true"/>
+ <copy file="${headers.orig}/cl_gl_ext.h" toDir="${headers.dest}" overwrite="true"/>
+ <copy file="${headers.orig}/cl_vendor_ext.h" toDir="${headers.dest}" overwrite="true"/>
+ </target>
+
+ <!--
+ - Setup the generating ANT tasks and use it to generate the Java files
+ - from the C OpenCL headers. This involves setting the taskdef and creating
+ - the classpath reference id then running the task on each header.
+ -->
+ <target name="java.generate" depends="build.gluegen, generate.jdk6.autocloseable, generate.jdk7.autocloseable, java.generate.check, preprocess-opencl-headers" unless="java.generate.skip">
+ <!-- Add the GlueGen task to ANT -->
+ <taskdef name="gluegen" classname="com.jogamp.gluegen.ant.GlueGenTask"
+ classpathref="gluegen.classpath" />
+
+ <!-- Use the GlueGen task to generate the Java files -->
+
+ <echo message="context..."/>
+ <echo message="incl path ${toString:stub.includes.fileset.all}"/>
+ <gluegen src="${stub.includes.opencl}/opencl.h"
+ outputRootDir="${build}"
+ config="${config}/cl-context-if.cfg"
+ includeRefid="stub.includes.fileset.all"
+ emitter="com.jogamp.gluegen.JavaEmitter"
+ dumpCPP="false"
+ debug="false">
+ <classpath refid="gluegen.classpath" />
+ </gluegen>
+
+ <echo message="program..."/>
+ <gluegen src="${stub.includes.opencl}/opencl.h"
+ outputRootDir="${build}"
+ config="${config}/cl-program-if.cfg"
+ includeRefid="stub.includes.fileset.all"
+ emitter="com.jogamp.gluegen.JavaEmitter"
+ dumpCPP="false"
+ debug="false">
+ <classpath refid="gluegen.classpath" />
+ </gluegen>
+
+ <echo message="kernel..."/>
+ <gluegen src="${stub.includes.opencl}/opencl.h"
+ outputRootDir="${build}"
+ config="${config}/cl-kernel-if.cfg"
+ includeRefid="stub.includes.fileset.all"
+ emitter="com.jogamp.gluegen.JavaEmitter"
+ dumpCPP="false"
+ debug="false">
+ <classpath refid="gluegen.classpath" />
+ </gluegen>
+
+ <echo message="queue..."/>
+ <gluegen src="${stub.includes.opencl}/opencl.h"
+ outputRootDir="${build}"
+ config="${config}/cl-queue-if.cfg"
+ includeRefid="stub.includes.fileset.all"
+ emitter="com.jogamp.gluegen.JavaEmitter"
+ dumpCPP="false"
+ debug="false">
+ <classpath refid="gluegen.classpath" />
+ </gluegen>
+
+ <echo message="device..."/>
+ <gluegen src="${stub.includes.opencl}/opencl.h"
+ outputRootDir="${build}"
+ config="${config}/cl-device-if.cfg"
+ includeRefid="stub.includes.fileset.all"
+ emitter="com.jogamp.gluegen.JavaEmitter"
+ dumpCPP="false"
+ debug="false">
+ <classpath refid="gluegen.classpath" />
+ </gluegen>
+
+ <echo message="memobj..."/>
+ <gluegen src="${stub.includes.opencl}/opencl.h"
+ outputRootDir="${build}"
+ config="${config}/cl-mem-if.cfg"
+ includeRefid="stub.includes.fileset.all"
+ emitter="com.jogamp.gluegen.JavaEmitter"
+ dumpCPP="false"
+ debug="false">
+ <classpath refid="gluegen.classpath" />
+ </gluegen>
+
+ <echo message="image..."/>
+ <gluegen src="${stub.includes.opencl}/opencl.h"
+ outputRootDir="${build}"
+ config="${config}/cl-image-if.cfg"
+ includeRefid="stub.includes.fileset.all"
+ emitter="com.jogamp.gluegen.JavaEmitter"
+ dumpCPP="false"
+ debug="false">
+ <classpath refid="gluegen.classpath" />
+ </gluegen>
+
+ <echo message="buffer..."/>
+ <gluegen src="${stub.includes.opencl}/opencl.h"
+ outputRootDir="${build}"
+ config="${config}/cl-buffer-if.cfg"
+ includeRefid="stub.includes.fileset.all"
+ emitter="com.jogamp.gluegen.JavaEmitter"
+ dumpCPP="false"
+ debug="false">
+ <classpath refid="gluegen.classpath" />
+ </gluegen>
+
+ <echo message="sampler..."/>
+ <gluegen src="${stub.includes.opencl}/opencl.h"
+ outputRootDir="${build}"
+ config="${config}/cl-sampler-if.cfg"
+ includeRefid="stub.includes.fileset.all"
+ emitter="com.jogamp.gluegen.JavaEmitter"
+ dumpCPP="false"
+ debug="false">
+ <classpath refid="gluegen.classpath" />
+ </gluegen>
+
+ <echo message="event..."/>
+ <gluegen src="${stub.includes.opencl}/opencl.h"
+ outputRootDir="${build}"
+ config="${config}/cl-event-if.cfg"
+ includeRefid="stub.includes.fileset.all"
+ emitter="com.jogamp.gluegen.JavaEmitter"
+ dumpCPP="false"
+ debug="false">
+ <classpath refid="gluegen.classpath" />
+ </gluegen>
+
+ <echo message="platform..."/>
+ <gluegen src="${stub.includes.opencl}/opencl.h"
+ outputRootDir="${build}"
+ config="${config}/cl-platform-if.cfg"
+ includeRefid="stub.includes.fileset.all"
+ emitter="com.jogamp.gluegen.JavaEmitter"
+ dumpCPP="false"
+ debug="false">
+ <classpath refid="gluegen.classpath" />
+ </gluegen>
+
+ <echo message="CL..."/>
+ <gluegen src="${stub.includes.opencl}/opencl.h"
+ outputRootDir="${build}"
+ config="${config}/cl-if.cfg"
+ includeRefid="stub.includes.fileset.all"
+ emitter="com.jogamp.gluegen.JavaEmitter"
+ dumpCPP="false"
+ debug="false">
+ <classpath refid="gluegen.classpath" />
+ </gluegen>
+
+ <echo message="CLGL..."/>
+ <gluegen src="${stub.includes.opencl}/opencl.h"
+ outputRootDir="${build}"
+ config="${config}/clgl-if.cfg"
+ includeRefid="stub.includes.fileset.all"
+ emitter="com.jogamp.gluegen.JavaEmitter"
+ debug="false">
+ <classpath refid="gluegen.classpath" />
+ </gluegen>
+
+ <echo message="GLImpl..."/>
+ <gluegen src="${stub.includes.opencl}/opencl.h"
+ outputRootDir="${build}"
+ config="${config}/cl-impl.cfg"
+ includeRefid="stub.includes.fileset.all"
+ emitter="com.jogamp.gluegen.procaddress.ProcAddressEmitter"
+ debug="false">
+ <classpath refid="gluegen.classpath" />
+ </gluegen>
+
+ <!-- Inform the user that the generators have successfully created
+ - the necessary Java files -->
+ <echo message="" />
+ <echo message="GlueGen has successfully generated files." />
+
+ </target>
+
+ <!-- ================================================================== -->
+ <!--
+ - Compile the original and generated source.
+ -->
+ <target name="java.compile" depends="java.generate">
+ <javac destdir="${classes}"
+ includeantruntime="false"
+ memoryMaximumSize="${javac.memorymax}"
+ encoding="UTF-8"
+ source="${target.sourcelevel}"
+ target="${target.targetlevel}"
+ bootclasspath="${target.rt.jar}"
+ debug="${javacdebug}" debuglevel="${javacdebuglevel}">
+ <classpath refid="javac.classpath"/>
+ <src path="${src.java}" />
+ <src path="${src.generated.java}" />
+ </javac>
+ </target>
+
+ <!-- ================================================================== -->
+ <!--
+ - Compile the native C code for JOCL.
+ -->
+
+ <target name="rename.mingw.dll" if="isMingW">
+ <move file="${src}" tofile="${dest}" />
+ </target>
+
+ <target name="rename.dylib" if="isOSX">
+ <move file="${src}" tofile="${dest}" />
+ </target>
+
+ <macrodef name="c.build">
+ <attribute name="compiler.cfg.id" />
+ <attribute name="linker.cfg.id" />
+ <attribute name="output.lib.name" />
+ <attribute name="c.compiler.use-jawt" default="false"/>
+ <sequential>
+ <echo message="Output lib name = @{output.lib.name}" />
+
+ <echo message="compiler.cfg.id.base: @{compiler.cfg.id}"/>
+ <echo message="linker.cfg.id.base: @{linker.cfg.id}"/>
+
+ <!-- NOTE: the value of the debug and optimise attributes will not be overridden if already set externally -->
+ <property name="c.compiler.debug" value="false" />
+ <!-- Optimise flags one of { none, size, speed, minimal, full, aggressive, extreme, unsafe } -->
+ <property name="c.compiler.optimise" value="none" />
+
+ <condition property="c.compiler.use-debug">
+ <istrue value="${c.compiler.debug}"/>
+ </condition>
+
+ <patternset id="c.src.files">
+ <include name="${rootrel.generated.c.jocl}/*.c"/>
+ </patternset>
+
+ <echo message="Compiling @{output.lib.name}" />
+
+ <cc outtype="shared"
+ objdir="${obj}"
+ outfile="${obj}/@{output.lib.name}"
+ optimize="${c.compiler.optimise}"
+ debug="${c.compiler.debug}"
+ multithreaded="true"
+ exceptions="false"
+ rtti="false">
+
+ <fileset dir="${project.root}">
+ <patternset refid="c.src.files"/>
+ </fileset>
+
+ <compiler extends="@{compiler.cfg.id}" >
+ <sysincludepath path="${java.includes.dir}"/>
+ <sysincludepath path="${java.includes.dir.platform}"/>
+ <sysincludepath path="${stub.includes.gluegen.cc}"/>
+ <includepath path="resources/includes"/>
+ <!-- This is for the generated headers for handwritten C code -->
+ <includepath path="${src.generated.c}" />
+ <includepath path="${src.c}"/>
+
+ <!-- This must come last to not override real include paths -->
+ <!-- includepath path="stub_includes/macosx" if="isOSX" / -->
+ </compiler>
+
+ <linker extends="@{linker.cfg.id}" />
+ </cc>
+
+ <antcall target="rename.dylib" inheritRefs="true">
+ <param name="src" value="${obj}/lib@{output.lib.name}.dylib" />
+ <param name="dest" value="${obj}/lib@{output.lib.name}.jnilib" />
+ </antcall>
+
+ <antcall target="rename.mingw.dll" inheritRefs="true">
+ <param name="src" value="${obj}/lib@{output.lib.name}.so" />
+ <param name="dest" value="${obj}/@{output.lib.name}.dll" />
+ </antcall>
+ </sequential>
+ </macrodef>
+
+ <target name="c.build.jocl" depends="init, gluegen.cpptasks.detect.os, gluegen.cpptasks.setup.compiler">
+ <echo message="compiler.cfg.id.base: ${compiler.cfg.id.base}"/>
+ <echo message="linker.cfg.id.base: ${linker.cfg.id.base}"/>
+ <c.build compiler.cfg.id="${compiler.cfg.id.base}"
+ output.lib.name="jocl"
+ linker.cfg.id="${linker.cfg.id.base}"/>
+
+ <antcall target="gluegen.cpptasks.striplibs" inheritRefs="true">
+ <param name="libdir" value="../${rootrel.build}/obj"/>
+ </antcall>
+
+ <!-- Create Java Web Start jar file from built file -->
+ <jar destfile="${build}/jocl-natives-${os.and.arch}.jar">
+ <fileset dir="../${rootrel.build}/obj">
+ <include name="*jocl.${native.library.suffix}" />
+ <include name="*soft_oal.${native.library.suffix}" />
+ <include name="*openal.${native.library.suffix}" />
+ <exclude name="*openal*.1*.${native.library.suffix}" />
+ </fileset>
+ </jar>
+ </target>
+
+ <!-- ================================================================== -->
+ <!--
+ - Build the jocl.jar file.
+ -->
+ <target name="jar" depends="init">
+ <!-- Prepare the manifest -->
+ <copy file="joclversion"
+ tofile="tempversion"
+ overwrite="true">
+ <filterset>
+ <filter token="VERSION" value="${jogamp.version}"/>
+ <filter token="BUILD_VERSION" value="${jocl.version}"/>
+ <filter token="SCM_BRANCH" value="${jocl.build.branch}"/>
+ <filter token="SCM_COMMIT" value="${jocl.build.commit}"/>
+ <filter token="BASEVERSION" value="${jogamp.version.base}" />
+ <filter token="JAR_CODEBASE_TAG" value="${jogamp.jar.codebase}"/>
+ </filterset>
+ </copy>
+
+ <!-- Build the jar excluding any build specific classes. -->
+ <jar manifest="tempversion" destfile="${jocl.jar}">
+ <fileset dir="${classes}">
+ <include name="com/jogamp/common/**" />
+ <include name="com/jogamp/opencl/**" />
+ </fileset>
+ </jar>
+ <copy file="${jocl.jar}" tofile="${jocl-android.jar}"/>
+
+ <antcall target="android.package" inheritRefs="true" />
+
+ <delete file="tempversion"/>
+ </target>
+
+ <target name="android.package" depends="init" if="isAndroid">
+ <aapt.signed
+ jarsrcdir="${src.java}"
+ jarbuilddir="${build}"
+ jarbasename="jocl-android"
+ nativebuilddir="../${rootrel.build}/obj"
+ nativebasename=""
+ android.abi="${android.abi}"
+ androidmanifest.path="resources/android/AndroidManifest-jocl.xml"
+ androidresources.path="resources/android/res-jocl"
+ jarmanifest.path="tempversion"
+ version.code="${jogamp.version.int}"
+ version.name="${jogamp.version}" />
+ </target>
+
+ <!-- ================================================================== -->
+ <!--
+ - Build the Javadocs for the sources.
+ - NOTE: these are not entirely correct as the javadocs targets depend
+ - on the platform specific build targets. To circumvent any
+ - errors, ensure that the source is built first.
+ -->
+ <target name="javadoc" depends="init, javadoc.init, javadoc.public, javadoc.dev, javadoc.zip"/>
+
+ <!-- copies ${gluegen-javadoc.path}/** to ${javadoc.root.path}/gluegen/
+ gluegen-javadoc.path is the parent folder of package-list:
+ gluegen-javadoc.path := build/javadoc/gluegen
+ with build/javadoc/gluegen/javadoc/package-list
+ -->
+ <target name="javadoc.gluegen" depends="init" if="gluegen-javadoc.path">
+ <delete dir="${javadoc.root.path}/gluegen" includeEmptyDirs="true" quiet="true" failonerror="false" />
+ <mkdir dir="${javadoc.root.path}/gluegen" />
+
+ <copy todir="${javadoc.root.path}/gluegen" failonerror="false">
+ <fileset dir="${gluegen-javadoc.path}" includes="**" />
+ </copy>
+ </target>
+
+ <target name="javadoc.init" depends="init">
+ <!-- property name="javadoc.link" value="http://java.sun.com/j2se/1.4.2/docs/api/" /-->
+ <!-- property name="javadoc.link" value="http://download.oracle.com/javase/1.5.0/docs/api/" /-->
+ <property name="javadoc.link" value="http://docs.oracle.com/javase/6/docs/api/" />
+
+ <!-- Link offline with relative URLs does not work.
+ Link online with relative URLs works,
+ so we have to assume the same relative online folder structure:
+
+ http://jogamp.org/deployment/jogamp-next/javadoc/gluegen/javadoc/
+ http://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/
+ http://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc_dev/
+ http://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc_jogl_spec/
+ http://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc_nativewindow_spec/
+
+ gluegen rel URL: ../../gluegen/javadoc
+
+ build structure:
+
+ jogl.root: build/javadoc/jogl/<javadoc-type> (we have javadoc, javadoc_dev and javadoc_jogl_spec, ..)
+ gluegen.root: build/javadoc/gluegen/javadoc
+
+ to match the online gluegen rel URL, we need:
+
+ jogl.root: build/javadoc/gluegen/javadoc
+ -->
+ <property name="gluegen.link" value="../../gluegen/javadoc" />
+ <property name="javadoc.root.path" value="${build}/javadoc" />
+ <property name="javadoc.jocl.public.path" value="${javadoc.root.path}/jocl/javadoc" />
+ <property name="javadoc.jocl.dev.path" value="${javadoc.root.path}/jocl/javadoc_dev" />
+
+ <property name="javadoc.packagenames" value="com.jogamp.openal,com.jogamp.openal.util,com.jogamp.openal.sound3d" />
+ <property name="javadoc.dev.packagenames" value="${javadoc.packagenames},jogamp.openal" />
+
+ <!-- if gluegen-javadoc.path is not set, check in default location,
+ ${gluegen.root}/${rootrel.build}/javadoc/gluegen -->
+ <available file="${gluegen.build}/javadoc/gluegen/javadoc/package-list"
+ type="file"
+ property="gluegen-javadoc.path"
+ value="${gluegen.build}/javadoc/gluegen" />
+ <antcall target="javadoc.gluegen" inheritRefs="true" />
+ </target>
+
+ <target name="javadoc.zip" depends="javadoc.init">
+ <archive.7z destfile="${build}/javadoc.7z"
+ basedir="${javadoc.root.path}"
+ includes="jocl/**" />
+ </target>
+
+ <target name="javadoc.public" depends="javadoc.init">
+ <javadoc packagenames="${javadoc.packagenames}"
+ sourcepath="${src.java};${src.generated.java}"
+ destdir="${javadoc.jocl.public.path}" windowtitle="JOCL API"
+ encoding="UTF-8"
+ source="${target.sourcelevel}"
+ maxmemory="${javac.memorymax}"
+ stylesheetfile="${gluegen.make.dir}/doc/javadoc/stylesheet.css">
+ <classpath refid="jocl_all.classpath"/>
+ <link offline="true" href="${javadoc.link}" packagelistLoc="${gluegen.root}/make/142-packages" />
+ <link offline="false" href="${gluegen.link}" />
+ </javadoc>
+ <copy todir="${javadoc.jocl.public.path}/resources" overwrite="true">
+ <fileset dir="${gluegen.make.dir}/doc/javadoc/resources" includes="*" />
+ </copy>
+ </target>
+
+ <target name="javadoc.dev" depends="javadoc.init">
+ <!-- Build the internal developer Javadoc -->
+ <javadoc packagenames="${javadoc.dev.packagenames},${javadoc.dev.packagenames.platform}"
+ sourcepath="${src.java};${src.generated.java}"
+ destdir="${javadoc.jocl.dev.path}" windowtitle="JOCL API"
+ encoding="UTF-8"
+ source="${target.sourcelevel}"
+ maxmemory="${javac.memorymax}"
+ stylesheetfile="${gluegen.make.dir}/doc/javadoc/stylesheet.css">
+ <classpath refid="jocl_all.classpath"/>
+ <link offline="true" href="${javadoc.link}" packagelistLoc="${gluegen.root}/make/142-packages" />
+ <link offline="false" href="${gluegen.link}" />
+ </javadoc>
+ <copy todir="${javadoc.jocl.dev.path}/resources" overwrite="true">
+ <fileset dir="${gluegen.make.dir}/doc/javadoc/resources" includes="*" />
+ </copy>
+ </target>
+
+ <target name="developer-src-zip" depends="init">
+ <!--delete includeEmptyDirs="true" quiet="true" failonerror="false">
+ <fileset dir="${build}" includes="jocl-java-src.zip" />
+ </delete-->
+ <zip destfile="${build}/jocl-java-src.zip">
+ <fileset dir="${src.java}"/>
+ <fileset dir="${build}/gensrc"/>
+ </zip>
+ </target>
+
+ <!-- Build binary zip archives for developers -->
+ <target name="developer-zip-archive" depends="init,developer-src-zip" if="build.archiveon">
+ <!-- Clean up and create temporary directory -->
+ <delete includeEmptyDirs="true" quiet="true" dir="${archive}" failonerror="false" />
+ <mkdir dir="${archive}" />
+ <copy file="${build}/artifact.properties" todir="${archive}"/>
+ <mkdir dir="${archive}/jar" />
+ <copy todir="${archive}/jar">
+ <fileset dir="${build}" includes="jocl*.jar"/>
+ <fileset dir="${build}" includes="jocl*.apk"/>
+ </copy>
+ <mkdir dir="${archive}/lib" />
+ <copy todir="${archive}/lib">
+ <fileset dir="${build}/obj" includes="*.${native.library.suffix}"/>
+ </copy>
+ <mkdir dir="${archive}/jnlp-files" />
+ <copy todir="${archive}/jnlp-files">
+ <fileset dir="${project.root}/jnlp-files" includes="*" />
+ </copy>
+ <mkdir dir="${archive}/www" />
+ <copy todir="${archive}/www">
+ <fileset dir="${project.root}/www" includes="*" />
+ </copy>
+ <copy file="../README.txt" todir="${archive}"/>
+ <copy file="../LICENSE.txt" todir="${archive}"/>
+ <copy todir="${archive}" file="${build}/jocl-java-src.zip"/>
+ <archive.7z destfile="${build}/${archive.name}.7z"
+ basedir="${build}"
+ includes="${archive.name}/**" />
+ <!-- Clean up after ourselves -->
+ <delete includeEmptyDirs="true" quiet="true" dir="${archive}" failonerror="false" />
+ </target>
+
+ <!-- ================================================================== -->
+ <!--
+ - Clean up all that is built.
+ -->
+ <target name="clean" depends="init">
+ <delete includeEmptyDirs="true" quiet="true">
+ <fileset dir="${build}" />
+ <fileset dir="${tempdir}" />
+ <fileset dir="${javadoc}" />
+ <fileset dir="${javadoc.dev}" />
+ <fileset dir="${headers.dest}" />
+ </delete>
+ <ant antfile="build-test.xml" target="clean"/>
+ </target>
+
+ <!-- ================================================================== -->
+ <!--
+ - Build everything.
+ -->
+ <target name="all" depends="jocl.build, test.compile, tag.build, developer-zip-archive"/>
+
+ <target name="jocl.build" depends="init">
+ <!-- Generate and compile the Java sources. -->
+ <antcall target="java.compile" inheritRefs="true" />
+
+ <!-- Compile the native C sources . -->
+ <antcall target="c.build.jocl" inheritRefs="true" />
+
+ <!-- build the jar/apk -->
+ <antcall target="jar" inheritRefs="true" />
+ </target>
+
+ <target name="tag.build" depends="init">
+ <copy file="${gluegen.build}/artifact.properties" todir="${build}" overwrite="true" failonerror="false"/>
+ <echo message='jocl.build.version=${jogamp.version}${line.separator}' file="${build}/artifact.properties" append="true"/>
+ <echo message='jocl.build.number=${jocl.build.number}${line.separator}' file="${build}/artifact.properties" append="true"/>
+ <echo message='jocl.build.id=${jocl.build.id}${line.separator}' file="${build}/artifact.properties" append="true"/>
+ <echo message='jocl.build.branch=${jocl.build.branch}${line.separator}' file="${build}/artifact.properties" append="true"/>
+ <echo message='jocl.build.commit=${jocl.build.commit}${line.separator}' file="${build}/artifact.properties" append="true"/>
+ </target>
+
+ <!-- ================================================================== -->
+ <!--
+ - unit tests
+ -->
+
+ <target name="test.compile" depends="jocl.build">
+ <ant antfile="build-test.xml" target="test.compile" inheritRefs="true" inheritAll="true"/>
+ </target>
+
+ <target name="test.auto.run" depends="test.compile">
+ <ant antfile="build-test.xml" target="test.auto.run" inheritRefs="true" inheritAll="true"/>
+ </target>
+
+ <target name="junit.run" depends="test.compile">
+ <ant antfile="build-test.xml" target="junit.run" inheritRefs="true" inheritAll="true"/>
+ </target>
+
+ <target name="test.manual.run" depends="test.compile">
+ <ant antfile="build-test.xml" target="test.manual.run" inheritRefs="true" inheritAll="true"/>
+ </target>
+
+</project>
diff --git a/make/joclversion b/make/joclversion
new file mode 100644
index 00000000..ae7239d1
--- /dev/null
+++ b/make/joclversion
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Application-Name: Java Bindings for OpenCL
+Specification-Title: Java Bindings for OpenCL API Specification
+Specification-Version: @BASEVERSION@
+Specification-Vendor: JogAmp Community
+Implementation-Title: Java Bindings for OpenCL Runtime Environment
+Implementation-Version: @VERSION@
+Implementation-Build: @BUILD_VERSION@
+Implementation-Branch: @SCM_BRANCH@
+Implementation-Commit: @SCM_COMMIT@
+Implementation-Vendor: JogAmp Community
+Implementation-URL: http://jogamp.org/
+Extension-Name: com.jogamp.opencl
+Implementation-Vendor-Id: com.jogamp
+Trusted-Library: true
+Permissions: all-permissions
+Name: jogamp/opencl/
+Sealed: true
+@JAR_CODEBASE_TAG@
diff --git a/make/joclversion-test b/make/joclversion-test
new file mode 100644
index 00000000..ed11ebe6
--- /dev/null
+++ b/make/joclversion-test
@@ -0,0 +1,14 @@
+Manifest-Version: 1.0
+Application-Name: Java Bindings for OpenCL Test
+Specification-Title: Test Java Bindings for OpenCL API Specification
+Specification-Version: @BASEVERSION@
+Specification-Vendor: JogAmp Community
+Implementation-Title: Test Java Bindings for OpenCL Runtime Environment on Android
+Implementation-Version: @VERSION@
+Implementation-Build: @BUILD_VERSION@
+Implementation-Branch: @SCM_BRANCH@
+Implementation-Commit: @SCM_COMMIT@
+Implementation-Vendor: JogAmp Community
+Implementation-URL: http://jogamp.org/
+Extension-Name: com.jogamp.opencl.test
+Implementation-Vendor-Id: com.jogamp
diff --git a/make/joclversion-test-android b/make/joclversion-test-android
new file mode 100644
index 00000000..ed11ebe6
--- /dev/null
+++ b/make/joclversion-test-android
@@ -0,0 +1,14 @@
+Manifest-Version: 1.0
+Application-Name: Java Bindings for OpenCL Test
+Specification-Title: Test Java Bindings for OpenCL API Specification
+Specification-Version: @BASEVERSION@
+Specification-Vendor: JogAmp Community
+Implementation-Title: Test Java Bindings for OpenCL Runtime Environment on Android
+Implementation-Version: @VERSION@
+Implementation-Build: @BUILD_VERSION@
+Implementation-Branch: @SCM_BRANCH@
+Implementation-Commit: @SCM_COMMIT@
+Implementation-Vendor: JogAmp Community
+Implementation-URL: http://jogamp.org/
+Extension-Name: com.jogamp.opencl.test
+Implementation-Vendor-Id: com.jogamp
diff --git a/resources/android/AndroidManifest-jocl.xml b/make/resources/android/AndroidManifest-jocl.xml
index 07fff315..07fff315 100644
--- a/resources/android/AndroidManifest-jocl.xml
+++ b/make/resources/android/AndroidManifest-jocl.xml
diff --git a/resources/android/res-jocl/drawable-hdpi/icon.png b/make/resources/android/res-jocl/drawable-hdpi/icon.png
index 2148232c..2148232c 100644
--- a/resources/android/res-jocl/drawable-hdpi/icon.png
+++ b/make/resources/android/res-jocl/drawable-hdpi/icon.png
Binary files differ
diff --git a/resources/android/res-jocl/drawable-ldpi/icon.png b/make/resources/android/res-jocl/drawable-ldpi/icon.png
index c16211f3..c16211f3 100644
--- a/resources/android/res-jocl/drawable-ldpi/icon.png
+++ b/make/resources/android/res-jocl/drawable-ldpi/icon.png
Binary files differ
diff --git a/resources/android/res-jocl/drawable-mdpi/icon.png b/make/resources/android/res-jocl/drawable-mdpi/icon.png
index 1c26e3f8..1c26e3f8 100644
--- a/resources/android/res-jocl/drawable-mdpi/icon.png
+++ b/make/resources/android/res-jocl/drawable-mdpi/icon.png
Binary files differ
diff --git a/resources/android/res-jocl/layout/main.xml b/make/resources/android/res-jocl/layout/main.xml
index 3a5f117d..3a5f117d 100644
--- a/resources/android/res-jocl/layout/main.xml
+++ b/make/resources/android/res-jocl/layout/main.xml
diff --git a/resources/android/res-jocl/values/strings.xml b/make/resources/android/res-jocl/values/strings.xml
index 24038557..24038557 100644
--- a/resources/android/res-jocl/values/strings.xml
+++ b/make/resources/android/res-jocl/values/strings.xml
diff --git a/resources/cl-buffer-if.cfg b/make/resources/cl-buffer-if.cfg
index 197ef54d..197ef54d 100644
--- a/resources/cl-buffer-if.cfg
+++ b/make/resources/cl-buffer-if.cfg
diff --git a/resources/cl-common.cfg b/make/resources/cl-common.cfg
index d89643b9..d89643b9 100644
--- a/resources/cl-common.cfg
+++ b/make/resources/cl-common.cfg
diff --git a/resources/cl-context-if.cfg b/make/resources/cl-context-if.cfg
index 0e9a5617..0e9a5617 100644
--- a/resources/cl-context-if.cfg
+++ b/make/resources/cl-context-if.cfg
diff --git a/resources/cl-device-if.cfg b/make/resources/cl-device-if.cfg
index a32476ca..a32476ca 100644
--- a/resources/cl-device-if.cfg
+++ b/make/resources/cl-device-if.cfg
diff --git a/resources/cl-event-if.cfg b/make/resources/cl-event-if.cfg
index 87b55bfd..87b55bfd 100644
--- a/resources/cl-event-if.cfg
+++ b/make/resources/cl-event-if.cfg
diff --git a/make/resources/cl-if.cfg b/make/resources/cl-if.cfg
new file mode 100644
index 00000000..2078123a
--- /dev/null
+++ b/make/resources/cl-if.cfg
@@ -0,0 +1,42 @@
+Include cl-common.cfg
+
+Style InterfaceOnly
+
+ClassJavadoc CL /**
+ClassJavadoc CL * Java bindings to OpenCL, the Open Computing Language.
+ClassJavadoc CL * @author Michael Bien, GlueGen, et al.
+ClassJavadoc CL */
+JavaClass CL
+
+Extends CL CLContextBinding
+Extends CL CLProgramBinding
+Extends CL CLKernelBinding
+Extends CL CLCommandQueueBinding
+Extends CL CLDeviceBinding
+Extends CL CLImageBinding
+Extends CL CLBufferBinding
+Extends CL CLSamplerBinding
+Extends CL CLEventBinding
+Extends CL CLPlatformBinding
+
+ExtendedInterfaceSymbolsIgnore ../build/gensrc/java/com/jogamp/opencl/llb/CLContextBinding.java
+ExtendedInterfaceSymbolsIgnore ../build/gensrc/java/com/jogamp/opencl/llb/CLProgramBinding.java
+ExtendedInterfaceSymbolsIgnore ../build/gensrc/java/com/jogamp/opencl/llb/CLKernelBinding.java
+ExtendedInterfaceSymbolsIgnore ../build/gensrc/java/com/jogamp/opencl/llb/CLCommandQueueBinding.java
+ExtendedInterfaceSymbolsIgnore ../build/gensrc/java/com/jogamp/opencl/llb/CLDeviceBinding.java
+ExtendedInterfaceSymbolsIgnore ../build/gensrc/java/com/jogamp/opencl/llb/CLMemObjBinding.java
+ExtendedInterfaceSymbolsIgnore ../build/gensrc/java/com/jogamp/opencl/llb/CLImageBinding.java
+ExtendedInterfaceSymbolsIgnore ../build/gensrc/java/com/jogamp/opencl/llb/CLBufferBinding.java
+ExtendedInterfaceSymbolsIgnore ../build/gensrc/java/com/jogamp/opencl/llb/CLSamplerBinding.java
+ExtendedInterfaceSymbolsIgnore ../build/gensrc/java/com/jogamp/opencl/llb/CLEventBinding.java
+ExtendedInterfaceSymbolsIgnore ../build/gensrc/java/com/jogamp/opencl/llb/CLPlatformBinding.java
+
+#ignore cl-gl interoperability functions. Interface 'CL' is pure OpenCL.
+Ignore CL_GL_.*|cl.*GL.*|.*_GL_.*
+
+Ignore clCreateContext
+Ignore clCreateContextFromType
+Ignore clBuildProgram
+Ignore clEnqueueNativeKernel
+Ignore clSetEventCallback
+Ignore clSetMemObjectDestructorCallback
diff --git a/resources/cl-image-if.cfg b/make/resources/cl-image-if.cfg
index 611d1bf2..611d1bf2 100644
--- a/resources/cl-image-if.cfg
+++ b/make/resources/cl-image-if.cfg
diff --git a/resources/cl-impl.cfg b/make/resources/cl-impl.cfg
index c2aff892..c2aff892 100644
--- a/resources/cl-impl.cfg
+++ b/make/resources/cl-impl.cfg
diff --git a/resources/cl-kernel-if.cfg b/make/resources/cl-kernel-if.cfg
index be9d6aa2..be9d6aa2 100644
--- a/resources/cl-kernel-if.cfg
+++ b/make/resources/cl-kernel-if.cfg
diff --git a/resources/cl-mem-if.cfg b/make/resources/cl-mem-if.cfg
index 11c51d19..11c51d19 100644
--- a/resources/cl-mem-if.cfg
+++ b/make/resources/cl-mem-if.cfg
diff --git a/resources/cl-platform-if.cfg b/make/resources/cl-platform-if.cfg
index 1a355f34..1a355f34 100644
--- a/resources/cl-platform-if.cfg
+++ b/make/resources/cl-platform-if.cfg
diff --git a/resources/cl-program-if.cfg b/make/resources/cl-program-if.cfg
index 7b72272f..7b72272f 100644
--- a/resources/cl-program-if.cfg
+++ b/make/resources/cl-program-if.cfg
diff --git a/resources/cl-queue-if.cfg b/make/resources/cl-queue-if.cfg
index 171b9332..171b9332 100644
--- a/resources/cl-queue-if.cfg
+++ b/make/resources/cl-queue-if.cfg
diff --git a/resources/cl-sampler-if.cfg b/make/resources/cl-sampler-if.cfg
index 5329b7f5..5329b7f5 100644
--- a/resources/cl-sampler-if.cfg
+++ b/make/resources/cl-sampler-if.cfg
diff --git a/resources/clImplCustomCode.c b/make/resources/clImplCustomCode.c
index 751f819b..751f819b 100644
--- a/resources/clImplCustomCode.c
+++ b/make/resources/clImplCustomCode.c
diff --git a/resources/clImplCustomCode.java b/make/resources/clImplCustomCode.java
index bee53425..bee53425 100644
--- a/resources/clImplCustomCode.java
+++ b/make/resources/clImplCustomCode.java
diff --git a/resources/clgl-if.cfg b/make/resources/clgl-if.cfg
index 1671f76c..1671f76c 100644
--- a/resources/clgl-if.cfg
+++ b/make/resources/clgl-if.cfg
diff --git a/resources/createTagletProps.sh b/make/resources/createTagletProps.sh
index af3312e8..af3312e8 100644
--- a/resources/createTagletProps.sh
+++ b/make/resources/createTagletProps.sh
diff --git a/resources/includes/CL_orig/cl.h b/make/resources/includes/CL_orig/cl.h
index 4f21afe5..4f21afe5 100644
--- a/resources/includes/CL_orig/cl.h
+++ b/make/resources/includes/CL_orig/cl.h
diff --git a/resources/includes/CL_orig/cl_ext.h b/make/resources/includes/CL_orig/cl_ext.h
index 7310fd2b..7310fd2b 100644
--- a/resources/includes/CL_orig/cl_ext.h
+++ b/make/resources/includes/CL_orig/cl_ext.h
diff --git a/resources/includes/CL_orig/cl_gl.h b/make/resources/includes/CL_orig/cl_gl.h
index 3b4fe069..3b4fe069 100644
--- a/resources/includes/CL_orig/cl_gl.h
+++ b/make/resources/includes/CL_orig/cl_gl.h
diff --git a/resources/includes/CL_orig/cl_gl_ext.h b/make/resources/includes/CL_orig/cl_gl_ext.h
index fbf8b326..fbf8b326 100644
--- a/resources/includes/CL_orig/cl_gl_ext.h
+++ b/make/resources/includes/CL_orig/cl_gl_ext.h
diff --git a/resources/includes/CL_orig/cl_platform.h b/make/resources/includes/CL_orig/cl_platform.h
index c8c6d7f6..c8c6d7f6 100644
--- a/resources/includes/CL_orig/cl_platform.h
+++ b/make/resources/includes/CL_orig/cl_platform.h
diff --git a/resources/includes/CL_orig/cl_vendor_ext.h b/make/resources/includes/CL_orig/cl_vendor_ext.h
index a01a3535..a01a3535 100644
--- a/resources/includes/CL_orig/cl_vendor_ext.h
+++ b/make/resources/includes/CL_orig/cl_vendor_ext.h
diff --git a/resources/includes/GL3/gl3.h b/make/resources/includes/GL3/gl3.h
index 176ddb16..176ddb16 100644
--- a/resources/includes/GL3/gl3.h
+++ b/make/resources/includes/GL3/gl3.h
diff --git a/resources/includes/GL3/glext.h b/make/resources/includes/GL3/glext.h
index 8e40956e..8e40956e 100644
--- a/resources/includes/GL3/glext.h
+++ b/make/resources/includes/GL3/glext.h
diff --git a/resources/native-taglet.properties b/make/resources/native-taglet.properties
index 84477786..84477786 100644
--- a/resources/native-taglet.properties
+++ b/make/resources/native-taglet.properties
diff --git a/resources/opencl.h b/make/resources/opencl.h
index 28b874e7..28b874e7 100644
--- a/resources/opencl.h
+++ b/make/resources/opencl.h
diff --git a/resources/stubs_includes/common/stddef.h b/make/resources/stubs_includes/common/stddef.h
index f6c7207b..f6c7207b 100644
--- a/resources/stubs_includes/common/stddef.h
+++ b/make/resources/stubs_includes/common/stddef.h
diff --git a/resources/stubs_includes/common/stdint.h b/make/resources/stubs_includes/common/stdint.h
index 4e456608..4e456608 100644
--- a/resources/stubs_includes/common/stdint.h
+++ b/make/resources/stubs_includes/common/stdint.h
diff --git a/resources/stubs_includes/gl/gltypes.h b/make/resources/stubs_includes/gl/gltypes.h
index 3272b72a..3272b72a 100644
--- a/resources/stubs_includes/gl/gltypes.h
+++ b/make/resources/stubs_includes/gl/gltypes.h
diff --git a/resources/stubs_includes/jvm/jni.h b/make/resources/stubs_includes/jvm/jni.h
index be01d018..be01d018 100644
--- a/resources/stubs_includes/jvm/jni.h
+++ b/make/resources/stubs_includes/jvm/jni.h
diff --git a/resources/stubs_includes/jvm/jni_md.h b/make/resources/stubs_includes/jvm/jni_md.h
index 44978627..44978627 100644
--- a/resources/stubs_includes/jvm/jni_md.h
+++ b/make/resources/stubs_includes/jvm/jni_md.h
diff --git a/resources/cl-if.cfg b/resources/cl-if.cfg
deleted file mode 100644
index d97b3a73..00000000
--- a/resources/cl-if.cfg
+++ /dev/null
@@ -1,42 +0,0 @@
-Include cl-common.cfg
-
-Style InterfaceOnly
-
-ClassJavadoc CL /**
-ClassJavadoc CL * Java bindings to OpenCL, the Open Computing Language.
-ClassJavadoc CL * @author Michael Bien, GlueGen, et al.
-ClassJavadoc CL */
-JavaClass CL
-
-Extends CL CLContextBinding
-Extends CL CLProgramBinding
-Extends CL CLKernelBinding
-Extends CL CLCommandQueueBinding
-Extends CL CLDeviceBinding
-Extends CL CLImageBinding
-Extends CL CLBufferBinding
-Extends CL CLSamplerBinding
-Extends CL CLEventBinding
-Extends CL CLPlatformBinding
-
-ExtendedInterfaceSymbolsIgnore gensrc/java/com/jogamp/opencl/llb/CLContextBinding.java
-ExtendedInterfaceSymbolsIgnore gensrc/java/com/jogamp/opencl/llb/CLProgramBinding.java
-ExtendedInterfaceSymbolsIgnore gensrc/java/com/jogamp/opencl/llb/CLKernelBinding.java
-ExtendedInterfaceSymbolsIgnore gensrc/java/com/jogamp/opencl/llb/CLCommandQueueBinding.java
-ExtendedInterfaceSymbolsIgnore gensrc/java/com/jogamp/opencl/llb/CLDeviceBinding.java
-ExtendedInterfaceSymbolsIgnore gensrc/java/com/jogamp/opencl/llb/CLMemObjBinding.java
-ExtendedInterfaceSymbolsIgnore gensrc/java/com/jogamp/opencl/llb/CLImageBinding.java
-ExtendedInterfaceSymbolsIgnore gensrc/java/com/jogamp/opencl/llb/CLBufferBinding.java
-ExtendedInterfaceSymbolsIgnore gensrc/java/com/jogamp/opencl/llb/CLSamplerBinding.java
-ExtendedInterfaceSymbolsIgnore gensrc/java/com/jogamp/opencl/llb/CLEventBinding.java
-ExtendedInterfaceSymbolsIgnore gensrc/java/com/jogamp/opencl/llb/CLPlatformBinding.java
-
-#ignore cl-gl interoperability functions. Interface 'CL' is pure OpenCL.
-Ignore CL_GL_.*|cl.*GL.*|.*_GL_.*
-
-Ignore clCreateContext
-Ignore clCreateContextFromType
-Ignore clBuildProgram
-Ignore clEnqueueNativeKernel
-Ignore clSetEventCallback
-Ignore clSetMemObjectDestructorCallback
diff --git a/test/com/jogamp/opencl/CLCommandQueueTest.java b/test/com/jogamp/opencl/CLCommandQueueTest.java
index 57689818..a83acda2 100644
--- a/test/com/jogamp/opencl/CLCommandQueueTest.java
+++ b/test/com/jogamp/opencl/CLCommandQueueTest.java
@@ -29,7 +29,6 @@
package com.jogamp.opencl;
import org.junit.Rule;
-import org.junit.rules.MethodRule;
import org.junit.rules.Timeout;
import java.util.concurrent.CountDownLatch;
import com.jogamp.opencl.util.MultiQueueBarrier;
@@ -59,9 +58,8 @@ import static com.jogamp.opencl.CLCommandQueue.Mode.*;
*/
public class CLCommandQueueTest {
- @SuppressWarnings("deprecation")
@Rule
- public MethodRule methodTimeout= (MethodRule) new Timeout(20000);
+ public Timeout methodTimeout = new Timeout(20000);
@Test
public void enumsTest() {
diff --git a/test/com/jogamp/opencl/util/concurrent/CLMultiContextTest.java b/test/com/jogamp/opencl/util/concurrent/CLMultiContextTest.java
index 81d34907..818827c6 100644
--- a/test/com/jogamp/opencl/util/concurrent/CLMultiContextTest.java
+++ b/test/com/jogamp/opencl/util/concurrent/CLMultiContextTest.java
@@ -16,7 +16,6 @@ import java.nio.IntBuffer;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import org.junit.Rule;
-import org.junit.rules.MethodRule;
import org.junit.rules.Timeout;
import com.jogamp.opencl.util.CLMultiContext;
import java.nio.Buffer;
@@ -34,7 +33,7 @@ import static java.lang.System.*;
public class CLMultiContextTest {
@Rule
- public MethodRule methodTimeout= new Timeout(10000);
+ public Timeout methodTimeout= new Timeout(10000);
@Test
public void createMultiContextTest() {