aboutsummaryrefslogtreecommitdiffstats
path: root/make
diff options
context:
space:
mode:
Diffstat (limited to 'make')
-rwxr-xr-xmake/Manifest5
-rwxr-xr-xmake/Manifest-android-launcher8
-rwxr-xr-xmake/Manifest-rt5
-rwxr-xr-xmake/Manifest-rt-alt5
-rwxr-xr-xmake/Manifest-rt-android11
-rwxr-xr-xmake/Manifest-rt-natives5
-rwxr-xr-xmake/Manifest-rt.cdc5
-rw-r--r--make/build-test.xml214
-rw-r--r--make/build.xml467
-rw-r--r--make/doc/javadoc/resources/glass.pngbin0 -> 499 bytes
-rw-r--r--make/doc/javadoc/resources/x.pngbin0 -> 394 bytes
-rw-r--r--make/doc/javadoc/stylesheet.css762
-rw-r--r--make/elf-header.cfg56
-rwxr-xr-xmake/gluegen-cpptasks-base.xml722
-rw-r--r--make/gluegen-cpptasks-custom.xml6
-rwxr-xr-xmake/gluegen-properties.xml21
-rw-r--r--make/jogamp-androidtasks.xml120
-rwxr-xr-xmake/jogamp-env.xml261
-rw-r--r--make/jogamp-fat-test.mf20
-rw-r--r--make/jogamp-fat.mf26
-rw-r--r--make/lib/android-sdk/15/android-java-src.zipbin10711470 -> 0 bytes
-rw-r--r--make/lib/android-sdk/24/LICENSE.txt (renamed from make/lib/android-sdk/15/LICENSE.txt)4
-rw-r--r--make/lib/android-sdk/24/NOTICE.txt (renamed from make/lib/android-sdk/15/NOTICE.txt)0
-rw-r--r--make/lib/android-sdk/24/android-java-src.txt (renamed from make/lib/android-sdk/15/android-java-src.txt)2
-rw-r--r--make/lib/android-sdk/24/android-java-src.zip (renamed from make/lib/android-sdk/15/android.jar)bin17190617 -> 23053461 bytes
-rw-r--r--make/lib/android-sdk/24/android.jarbin0 -> 34266947 bytes
-rw-r--r--make/lib/android-sdk/9/LICENSE.txt10
-rw-r--r--make/lib/android-sdk/9/NOTICE.txt195
-rw-r--r--make/lib/android-sdk/9/android-java-src.txt22
-rw-r--r--make/lib/android-sdk/9/android-java-src.zipbin6020823 -> 0 bytes
-rw-r--r--make/lib/android-sdk/9/android.jarbin8407956 -> 0 bytes
-rwxr-xr-xmake/lib/cpptasks-version.txt1
-rw-r--r--make/lib/cpptasks.jarbin377953 -> 386216 bytes
-rw-r--r--make/lib/gluegen-cpptasks-android-aarch64.xml151
-rw-r--r--make/lib/gluegen-cpptasks-android-armv6.xml135
-rw-r--r--make/lib/gluegen-cpptasks-android-armv7.xml120
-rw-r--r--make/lib/gluegen-cpptasks-android-x86.xml147
-rw-r--r--make/lib/gluegen-cpptasks-ios-aarch64.xml18
-rw-r--r--make/lib/gluegen-cpptasks-ios-amd64.xml17
-rw-r--r--make/lib/gluegen-cpptasks-linux-32bit.xml8
-rw-r--r--make/lib/gluegen-cpptasks-linux-aarch64-ontarget.xml61
-rw-r--r--make/lib/gluegen-cpptasks-linux-aarch64.xml62
-rw-r--r--make/lib/gluegen-cpptasks-linux-armv6hf-ontarget.xml (renamed from make/lib/gluegen-cpptasks-linux-armv6.xml)25
-rw-r--r--make/lib/gluegen-cpptasks-linux-armv6hf.xml9
-rw-r--r--make/lib/semantic-versioning/README.md6
-rw-r--r--make/lib/semantic-versioning/VERSION21
-rw-r--r--make/lib/semantic-versioning/semver-src.zipbin42734 -> 48409 bytes
-rw-r--r--make/lib/semantic-versioning/semver.jarbin302044 -> 332541 bytes
l---------make/lib/toolchain/aarch64-linux-gnueabi/bin/c++1
l---------make/lib/toolchain/aarch64-linux-gnueabi/bin/cc1
l---------make/lib/toolchain/aarch64-linux-gnueabi/bin/g++1
l---------make/lib/toolchain/aarch64-linux-gnueabi/bin/gcc1
l---------make/lib/toolchain/aarch64-linux-gnueabi/bin/ld1
l---------make/lib/toolchain/aarch64-linux-gnueabi/bin/objdump1
l---------make/lib/toolchain/aarch64-linux-gnueabi/bin/strip1
l---------make/lib/toolchain/armhf-linux-gnueabi/bin/c++2
l---------make/lib/toolchain/armhf-linux-gnueabi/bin/cc2
l---------make/lib/toolchain/armhf-linux-gnueabi/bin/g++2
l---------make/lib/toolchain/armhf-linux-gnueabi/bin/gcc2
l---------make/lib/toolchain/armhf-linux-gnueabi/bin/ld2
l---------make/lib/toolchain/armhf-linux-gnueabi/bin/objdump2
l---------make/lib/toolchain/armhf-linux-gnueabi/bin/strip2
l---------make/lib/toolchain/armsf-linux-gnueabi/bin/c++1
l---------make/lib/toolchain/armsf-linux-gnueabi/bin/cc1
l---------make/lib/toolchain/armsf-linux-gnueabi/bin/g++1
l---------make/lib/toolchain/armsf-linux-gnueabi/bin/gcc1
l---------make/lib/toolchain/armsf-linux-gnueabi/bin/ld1
l---------make/lib/toolchain/armsf-linux-gnueabi/bin/objdump1
l---------make/lib/toolchain/armsf-linux-gnueabi/bin/strip1
-rw-r--r--make/lib/v2.2.1/gluegen-rt.jarbin0 -> 287455 bytes
-rw-r--r--make/lib/v2.3.0/gluegen-rt.jarbin0 -> 325890 bytes
-rw-r--r--make/lib/v2.3.2/gluegen-rt.jarbin0 -> 345605 bytes
-rw-r--r--make/resources/android/AndroidManifest-Launcher.xml2
-rw-r--r--make/resources/android/AndroidManifest-Runtime.xml2
-rw-r--r--make/resources/android/AndroidManifest-Test.xml2
-rw-r--r--make/scripts/adb-am-force-stop-all.sh14
-rwxr-xr-xmake/scripts/adb-install-all-aarch64.sh2
-rwxr-xr-xmake/scripts/adb-install-all-armv6.sh2
-rwxr-xr-xmake/scripts/adb-install-all-armv7.sh2
-rwxr-xr-xmake/scripts/adb-install-all-x86.sh2
-rw-r--r--make/scripts/adb-launch-main.sh2
-rw-r--r--make/scripts/adb-pm-clear-all.sh14
-rwxr-xr-xmake/scripts/adb-reinstall-all-aarch64.sh5
-rwxr-xr-xmake/scripts/adb-reinstall-all-x86.sh (renamed from make/scripts/adb-reinstall-all-armv7.sh)2
-rwxr-xr-xmake/scripts/check-java-major-version.sh2
-rw-r--r--make/scripts/crosstest-java-android-armv6-rel.sh2
-rw-r--r--make/scripts/crosstest-java-linux-armv6-rel.sh2
-rw-r--r--make/scripts/crosstest-java-linux-armv6hf-rel.sh2
-rw-r--r--make/scripts/crosstest-junit-android-armv7-rel.sh69
-rw-r--r--make/scripts/crosstest-junit-linux-armv7-rel.sh2
-rwxr-xr-xmake/scripts/java-win32.bat21
-rwxr-xr-xmake/scripts/java-win64.bat27
-rwxr-xr-xmake/scripts/make.gluegen.all-host-linux.sh20
-rwxr-xr-xmake/scripts/make.gluegen.all-host-macos.sh16
-rwxr-xr-xmake/scripts/make.gluegen.all.android-aarch64-cross.sh59
-rwxr-xr-xmake/scripts/make.gluegen.all.android-armv6-cross.sh101
-rwxr-xr-xmake/scripts/make.gluegen.all.android-armv7-cross.sh101
-rwxr-xr-xmake/scripts/make.gluegen.all.android-x86-cross.sh60
-rwxr-xr-xmake/scripts/make.gluegen.all.generic.sh6
-rwxr-xr-xmake/scripts/make.gluegen.all.ios.amd64.sh36
-rwxr-xr-xmake/scripts/make.gluegen.all.ios.arm64.sh36
-rwxr-xr-xmake/scripts/make.gluegen.all.linux-aarch64-cross.sh39
-rwxr-xr-xmake/scripts/make.gluegen.all.linux-aarch64.sh26
-rwxr-xr-xmake/scripts/make.gluegen.all.linux-armv6-cross.sh51
-rwxr-xr-xmake/scripts/make.gluegen.all.linux-armv6.sh21
-rwxr-xr-xmake/scripts/make.gluegen.all.linux-armv6hf-cross.sh19
-rwxr-xr-xmake/scripts/make.gluegen.all.linux-armv6hf.sh11
-rw-r--r--make/scripts/make.gluegen.all.linux-ppc64le.sh28
-rwxr-xr-xmake/scripts/make.gluegen.all.linux-x86-clang.sh10
-rwxr-xr-xmake/scripts/make.gluegen.all.linux-x86.sh10
-rwxr-xr-xmake/scripts/make.gluegen.all.linux-x86_64-clang.sh10
-rwxr-xr-xmake/scripts/make.gluegen.all.linux-x86_64.sh17
-rwxr-xr-xmake/scripts/make.gluegen.all.macosx-java7.sh22
-rwxr-xr-xmake/scripts/make.gluegen.all.macosx.sh15
-rwxr-xr-xmake/scripts/make.gluegen.all.sh9
-rwxr-xr-xmake/scripts/make.gluegen.all.solaris-x86.sh4
-rwxr-xr-xmake/scripts/make.gluegen.all.solaris-x86_64.sh4
-rwxr-xr-xmake/scripts/make.gluegen.all.win32.bat24
-rwxr-xr-xmake/scripts/make.gluegen.all.win64.bat21
-rw-r--r--make/scripts/make.macosx.jdk_lipo_libs.sh30
-rwxr-xr-xmake/scripts/md2html_update.sh11
-rwxr-xr-xmake/scripts/runtest-secmgr.sh2
-rwxr-xr-xmake/scripts/runtest-x32.bat8
-rwxr-xr-xmake/scripts/runtest-x64.bat28
-rwxr-xr-xmake/scripts/runtest.sh107
-rw-r--r--make/scripts/setenv-android-tools.sh373
-rw-r--r--make/scripts/setenv-build-jogamp-x86.sh (renamed from make/scripts/setenv-build-jogl-x86.sh)52
-rw-r--r--make/scripts/setenv-build-jogamp-x86_64.sh (renamed from make/scripts/setenv-build-jogl-x86_64.sh)49
-rwxr-xr-xmake/scripts/test-win32-smb_share.bat24
-rw-r--r--make/stub_includes/gluegen/stdio.h7
-rw-r--r--make/stub_includes/jni/jawt.h106
-rw-r--r--make/stub_includes/jni/jni.h1938
-rw-r--r--make/stub_includes/jni/macosx/jawt_md.h5
-rw-r--r--make/stub_includes/jni/macosx/jni_md.h29
-rw-r--r--make/stub_includes/jni/win32/jawt_md.h54
-rw-r--r--make/stub_includes/jni/win32/jni_md.h46
-rw-r--r--make/stub_includes/jni/x11/jawt_md.h56
-rw-r--r--make/stub_includes/jni/x11/jni_md.h40
-rw-r--r--make/stub_includes/os/elf_header.h5
-rw-r--r--make/stub_includes/platform/glibc-compat-symbols.h30
-rw-r--r--make/stub_includes/platform/gluegen_stddef.h2
-rw-r--r--make/stub_includes/platform/gluegen_stdint.h2
142 files changed, 6058 insertions, 1661 deletions
diff --git a/make/Manifest b/make/Manifest
index cab8805..b232e48 100755
--- a/make/Manifest
+++ b/make/Manifest
@@ -8,6 +8,11 @@ Implementation-Version: @VERSION@
Implementation-Build: @BUILD_VERSION@
Implementation-Branch: @SCM_BRANCH@
Implementation-Commit: @SCM_COMMIT@
+Implementation-SHA-Sources: @SHA_SOURCES@
+Implementation-SHA-Classes: @SHA_CLASSES@
+Implementation-SHA-Classes-this: @SHA_CLASSES_THIS@
+Implementation-SHA-Natives: @SHA_NATIVES@
+Implementation-SHA-Natives-this: @SHA_NATIVES_THIS@
Implementation-Vendor: JogAmp Community
Implementation-Vendor-Id: com.jogamp
Implementation-URL: http://jogamp.org/
diff --git a/make/Manifest-android-launcher b/make/Manifest-android-launcher
index 0da49d3..6bfa890 100755
--- a/make/Manifest-android-launcher
+++ b/make/Manifest-android-launcher
@@ -8,6 +8,11 @@ Implementation-Version: @VERSION@
Implementation-Build: @BUILD_VERSION@
Implementation-Branch: @SCM_BRANCH@
Implementation-Commit: @SCM_COMMIT@
+Implementation-SHA-Sources: @SHA_SOURCES@
+Implementation-SHA-Classes: @SHA_CLASSES@
+Implementation-SHA-Classes-this: @SHA_CLASSES_THIS@
+Implementation-SHA-Natives: @SHA_NATIVES@
+Implementation-SHA-Natives-this: @SHA_NATIVES_THIS@
Implementation-Vendor: JogAmp Community
Implementation-Vendor-Id: com.jogamp
Implementation-URL: http://jogamp.org/
@@ -17,6 +22,3 @@ Permissions: all-permissions
Application-Library-Allowable-Codebase: *
@JAR_CODEBASE_TAG@
-Name: jogamp/android/launcher/
-Sealed: true
-
diff --git a/make/Manifest-rt b/make/Manifest-rt
index 4a76c0c..22b8b06 100755
--- a/make/Manifest-rt
+++ b/make/Manifest-rt
@@ -8,6 +8,11 @@ Implementation-Version: @VERSION@
Implementation-Build: @BUILD_VERSION@
Implementation-Branch: @SCM_BRANCH@
Implementation-Commit: @SCM_COMMIT@
+Implementation-SHA-Sources: @SHA_SOURCES@
+Implementation-SHA-Classes: @SHA_CLASSES@
+Implementation-SHA-Classes-this: @SHA_CLASSES_THIS@
+Implementation-SHA-Natives: @SHA_NATIVES@
+Implementation-SHA-Natives-this: @SHA_NATIVES_THIS@
Implementation-Vendor: JogAmp Community
Implementation-Vendor-Id: com.jogamp
Implementation-URL: http://jogamp.org/
diff --git a/make/Manifest-rt-alt b/make/Manifest-rt-alt
index d95830e..6474c93 100755
--- a/make/Manifest-rt-alt
+++ b/make/Manifest-rt-alt
@@ -8,6 +8,11 @@ Implementation-Version: @VERSION@
Implementation-Build: @BUILD_VERSION@
Implementation-Branch: @SCM_BRANCH@
Implementation-Commit: @SCM_COMMIT@
+Implementation-SHA-Sources: @SHA_SOURCES@
+Implementation-SHA-Classes: @SHA_CLASSES@
+Implementation-SHA-Classes-this: @SHA_CLASSES_THIS@
+Implementation-SHA-Natives: @SHA_NATIVES@
+Implementation-SHA-Natives-this: @SHA_NATIVES_THIS@
Implementation-Vendor: JogAmp Community
Implementation-Vendor-Id: com.jogamp
Implementation-URL: http://jogamp.org/
diff --git a/make/Manifest-rt-android b/make/Manifest-rt-android
index bf5f123..4897ac9 100755
--- a/make/Manifest-rt-android
+++ b/make/Manifest-rt-android
@@ -8,6 +8,11 @@ Implementation-Version: @VERSION@
Implementation-Build: @BUILD_VERSION@
Implementation-Branch: @SCM_BRANCH@
Implementation-Commit: @SCM_COMMIT@
+Implementation-SHA-Sources: @SHA_SOURCES@
+Implementation-SHA-Classes: @SHA_CLASSES@
+Implementation-SHA-Classes-this: @SHA_CLASSES_THIS@
+Implementation-SHA-Natives: @SHA_NATIVES@
+Implementation-SHA-Natives-this: @SHA_NATIVES_THIS@
Implementation-Vendor: JogAmp Community
Implementation-Vendor-Id: com.jogamp
Implementation-URL: http://jogamp.org/
@@ -17,9 +22,3 @@ Permissions: all-permissions
Application-Library-Allowable-Codebase: *
@JAR_CODEBASE_TAG@
-Name: jogamp/common/
-Sealed: true
-
-Name: com/jogamp/common/
-Sealed: true
-
diff --git a/make/Manifest-rt-natives b/make/Manifest-rt-natives
index 90c5590..2767462 100755
--- a/make/Manifest-rt-natives
+++ b/make/Manifest-rt-natives
@@ -8,6 +8,11 @@ Implementation-Version: @VERSION@
Implementation-Build: @BUILD_VERSION@
Implementation-Branch: @SCM_BRANCH@
Implementation-Commit: @SCM_COMMIT@
+Implementation-SHA-Sources: @SHA_SOURCES@
+Implementation-SHA-Classes: @SHA_CLASSES@
+Implementation-SHA-Classes-this: @SHA_CLASSES_THIS@
+Implementation-SHA-Natives: @SHA_NATIVES@
+Implementation-SHA-Natives-this: @SHA_NATIVES_THIS@
Implementation-Vendor: JogAmp Community
Implementation-Vendor-Id: com.jogamp
Implementation-URL: http://jogamp.org/
diff --git a/make/Manifest-rt.cdc b/make/Manifest-rt.cdc
index 70c4f92..a23c48f 100755
--- a/make/Manifest-rt.cdc
+++ b/make/Manifest-rt.cdc
@@ -8,6 +8,11 @@ Implementation-Version: @VERSION@
Implementation-Build: @BUILD_VERSION@
Implementation-Branch: @SCM_BRANCH@
Implementation-Commit: @SCM_COMMIT@
+Implementation-SHA-Sources: @SHA_SOURCES@
+Implementation-SHA-Classes: @SHA_CLASSES@
+Implementation-SHA-Classes-this: @SHA_CLASSES_THIS@
+Implementation-SHA-Natives: @SHA_NATIVES@
+Implementation-SHA-Natives-this: @SHA_NATIVES_THIS@
Implementation-Vendor: JogAmp Community
Implementation-Vendor-Id: com.jogamp
Implementation-URL: http://jogamp.org/
diff --git a/make/build-test.xml b/make/build-test.xml
index f9092d0..7a6a304 100644
--- a/make/build-test.xml
+++ b/make/build-test.xml
@@ -36,6 +36,10 @@
<property name="test.junit.generation.rel" value="${test.junit.rel}/gluegen/test/junit/generation" />
<property name="test.junit.generation.dir" value="${test.base.dir}/${test.junit.generation.rel}" />
+ <property name="test.jcpp.base.dir" value="${project.root}/jcpp/src/test/java" />
+ <property name="test.jcpp.guava.jar" value="${project.root}/jcpp/lib/guava-32.1.2-jre.jar" />
+
+ <property name="tempdir" value="${project.root}/build-temp" />
<property name="build" location="${project.root}/${rootrel.build}" />
<property name="test.dir" value="${gluegen.root}/${rootrel.build}/test"/>
<property name="results" value="${test.dir}/results" />
@@ -50,6 +54,7 @@
<property name="build_t.gen.rootrel" value="${rootrel.build}/test/build/gensrc"/>
+ <mkdir dir="${tempdir}" />
<mkdir dir="${test.dir}"/>
<mkdir dir="${results}"/>
<mkdir dir="${build_t}"/>
@@ -77,20 +82,27 @@
</path>
<path id="junit.compile.classpath">
+ <pathelement location="${semver.jar}" />
<pathelement location="${junit.jar}" />
+ <pathelement location="${gluegen.jar}" />
+ </path>
+ <path id="jcpp.junit.compile.classpath">
<pathelement location="${semver.jar}" />
+ <pathelement location="${junit.jar}" />
<pathelement location="${gluegen.jar}" />
+ <pathelement location="${test.jcpp.guava.jar}" />
</path>
-
<path id="junit.run.classpath">
- <pathelement location="${junit.jar}" />
<pathelement location="${semver.jar}" />
+ <pathelement location="${junit.jar}" />
<pathelement location="${TestJarsInJar.jar}" />
<pathelement location="${gluegen-rt.jar}" />
<pathelement location="${gluegen.jar}" />
<pathelement location="${gluegen-test-util.jar}" />
<pathelement location="${gluegen-test.jar}" />
+ <pathelement location="${test.jcpp.guava.jar}" />
</path>
+
<property name="junit.run.jars" value="${junit.jar}${path.separator}${ant.jar}${path.separator}${semver.jar}${path.separator}${TestJarsInJar.jar}${path.separator}${gluegen.root}/${rootrel.build}/gluegen-rt.jar${path.separator}${gluegen.root}/${rootrel.build}/gluegen.jar${path.separator}${build}/gluegen-test-util.jar${path.separator}${build_t}/gluegen-test.jar"/>
<property name="junit.run.remote.jars" value="${junit.jar}${path.separator}${env.TARGET_ANT_HOME}/lib/ant.jar${path.separator}${env.TARGET_ANT_HOME}/lib/ant-junit.jar${path.separator}${env.TARGET_ANT_HOME}/lib/ant-junit4.jar${path.separator}${semver.jar}${path.separator}${gluegen.root}/make/lib/TestJarsInJar.jar${path.separator}${gluegen.root}/${rootrel.build}/gluegen-rt.jar${path.separator}${gluegen.root}/${rootrel.build}/gluegen.jar${path.separator}${build}/gluegen-test-util.jar${path.separator}${build_t}/gluegen-test.jar"/>
<property name="junit.run.remote.apks" value="${gluegen.root}/${rootrel.build}/jogamp-android-launcher.apk${path.separator}${ant-junit-all.apk}${path.separator}${gluegen.root}/${rootrel.build}/gluegen-rt-android-${android.abi}.apk${path.separator}${build_t}/gluegen-test.apk${path.separator}${gluegen.root}/make/lib/TestJarsInJar.apk"/>
@@ -121,6 +133,7 @@
<echo message=" build_t.gen ${build_t.gen}"/>
<!-- Javac of Annotation Processor dependencies - First -->
+ <!-- This has a hard Java8 target spec test: source, target + bootclasspath -->
<javac destdir="${build_t.java}"
fork="yes"
includeAntRuntime="false"
@@ -136,6 +149,7 @@
</javac>
<!-- Annotation Processor - Second -->
+ <!-- This has a hard Java8 target spec test: source, target + bootclasspath -->
<mkdir dir="${build_t.gen}/classes/com/jogamp/gluegen/test/junit/structgen"/>
<javac destdir="${build_t.java}"
fork="yes"
@@ -148,16 +162,18 @@
debug="${javacdebug}" debuglevel="${javacdebuglevel}">
<classpath refid="junit.compile.classpath"/>
<compilerarg value="-proc:only"/>
- <compilerarg value="-J-Djogamp.gluegen.structgen.debug"/>
+ <!-- compilerarg value="-J-Djogamp.gluegen.structgen.debug"/ -->
<compilerarg value="-J-Djogamp.gluegen.structgen.output=${build_t.gen}/classes"/>
<src path="${test.base.dir}/com/jogamp/gluegen/test/junit/structgen"/>
<src path="${build_t.gen}/classes/com/jogamp/gluegen/test/junit/structgen" />
</javac>
- <!-- Javac All - Third -->
+ <!-- GlueGen Tests - Third -->
+ <!-- This has a hard Java8 target spec test: source, target + bootclasspath -->
<javac destdir="${build_t.java}"
fork="yes"
includeAntRuntime="false"
+ nativeheaderdir="${build_t.gen}/native/"
memoryMaximumSize="${javac.memorymax}"
encoding="UTF-8"
source="${target.sourcelevel}"
@@ -170,6 +186,24 @@
<src path="${build_t.gen}" />
</javac>
+ <!-- JCPP Tests - Fourth -->
+ <!-- This has a soft Java8 bytecote target only (Using some build time APIs): target -->
+ <javac destdir="${build_t.java}"
+ fork="yes"
+ includeAntRuntime="false"
+ memoryMaximumSize="${javac.memorymax}"
+ encoding="UTF-8"
+ source="${target.sourcelevel}"
+ target="${target.targetlevel}"
+ debug="${javacdebug}" debuglevel="${javacdebuglevel}">
+ <classpath refid="jcpp.junit.compile.classpath"/>
+ <compilerarg value="-proc:none"/>
+ <src path="${test.jcpp.base.dir}"/>
+ <src path="${build_t.gen}" />
+ </javac>
+ </target>
+
+ <target name="jar.build">
<jar destfile="${gluegen-test-util.jar}">
<fileset dir="${build_t.java}">
<include name="${test.junit.util.rel}/**/*.class"/>
@@ -190,7 +224,7 @@
</jar>
</target>
- <target name="android.package" depends="java.generate,java.build,native.build" if="isAndroid">
+ <target name="android.package" depends="java.generate,java.build,native.build,jar.build" if="isAndroid">
<aapt.signed
assetsdir="resources/assets-test"
jarbuilddir="${build_t}"
@@ -201,8 +235,14 @@
androidmanifest.path="resources/android/AndroidManifest-Test.xml"
androidresources.path="resources/android/res"
version.code="${jogamp.version.int}"
- version.name="${jogamp.version}"
- />
+ version.name="${jogamp.version}">
+ <d8-classpaths>
+ <arg line="--classpath ${junit.jar}"/>
+ <arg line="--classpath ${semver.jar}"/>
+ <arg line="--classpath ${gluegen.jar}"/>
+ <arg line="--classpath ${gluegen-test-util.jar}"/>
+ </d8-classpaths>
+ </aapt.signed>
</target>
<target name="c.configure" depends="gluegen.cpptasks.detect.os,gluegen.cpptasks.setup.compiler">
@@ -210,12 +250,6 @@
<property name="linker.cfg.id" value="${linker.cfg.id.base}" />
</target>
- <!-- FIXME: this is a hack; the cpptask should have an option to change the
- suffix or at least understand the override from dylib to jnilib -->
- <target name="rename.dylib" if="isOSX">
- <move file="${src}" tofile="${dest}" />
- </target>
-
<macrodef name="c.build">
<attribute name="c.compiler.src.files" />
<attribute name="compiler.cfg.id" />
@@ -235,7 +269,7 @@
<condition property="c.compiler.use-debug"><istrue value="${c.compiler.debug}"/></condition>
- <cc outtype="shared"
+ <cc outtype="${output.lib.type}"
objdir="${build_t.obj}"
outfile="${build_t.lib}/@{output.lib.name}"
optimize="${c.compiler.optimise}"
@@ -264,9 +298,10 @@
<target name="junit.compile.check" depends="init">
<uptodate property="junit.compile.skip">
- <srcfiles dir= "." includes="*.xml"/>
- <srcfiles dir= "${test.base.dir}" includes="**"/>
- <srcfiles file="${gluegen.jar}" />
+ <srcfiles dir= "." includes="*.xml"/>
+ <srcfiles dir= "${test.base.dir}" includes="**"/>
+ <srcfiles dir= "${test.jcpp.base.dir}" includes="**"/>
+ <srcfiles file="${gluegen.jar}" />
<mapper type="merge" to="${gluegen-test.jar}"/>
</uptodate>
</target>
@@ -437,8 +472,11 @@ chmod 644 ${results}/* \${line.separator}
<jvmarg value="-Drootrel.build=${rootrel.build}"/>
<!--
<jvmarg value="-Djogamp.debug.NativeLibrary=true"/>
- <jvmarg value="-Djogamp.debug.ProcAddressHelper=true"/>
<jvmarg value="-Djogamp.debug.JNILibLoader=true"/>
+ <jvmarg value="-Djogamp.debug.TempFileCache=true"/>
+ <jvmarg value="-Djogamp.debug.JarUtil=true"/>
+ <jvmarg value="-Djogamp.debug.TempJarCache=true"/>
+ <jvmarg value="-Djogamp.debug.ProcAddressHelper=true"/>
<jvmarg value="-verbose:jni"/>
<jvmarg value="-client"/>
-->
@@ -508,14 +546,20 @@ chmod 644 ${results}/* \${line.separator}
-->
- <target name="java.generate" depends="junit.test1.java.generate"/>
+ <target name="java.generate" depends="junit.test1.java.generate, junit.test2.java.generate"/>
- <target name="native.build" depends="c.configure, junit.test1.c.build" unless="build.javaonly">
+ <target name="native.build" depends="c.configure, junit.test1.c.build, junit.test2.c.build" unless="build.javaonly">
<antcall target="gluegen.cpptasks.striplibs" inheritRefs="true">
<param name="libdir" value="${build_t.lib}"/>
</antcall>
</target>
+ <target name="java.generate.copy2temp">
+ <copy todir="${tempdir}">
+ <fileset dir="${build_t}"
+ includes="gensrc/classes/**" />
+ </copy>
+ </target>
<!--
@@ -542,9 +586,11 @@ chmod 644 ${results}/* \${line.separator}
includeRefid="stub.includes.fileset.test"
emitter="com.jogamp.gluegen.JavaEmitter"
dumpCPP="false"
- debug="false">
+ debug="false"
+ logLevel="WARNING">
<classpath refid="gluegen.classpath" />
</gluegen>
+ <antcall target="java.generate.copy2temp" inheritRefs="true" />
<gluegen src="${test.junit.generation.dir}/test1-gluegen.c"
outputRootDir="${build_t.gen}"
@@ -553,7 +599,8 @@ chmod 644 ${results}/* \${line.separator}
includeRefid="stub.includes.fileset.test"
emitter="com.jogamp.gluegen.JavaEmitter"
dumpCPP="false"
- debug="false">
+ debug="false"
+ logLevel="WARNING">
<classpath refid="gluegen.classpath" />
</gluegen>
@@ -564,7 +611,8 @@ chmod 644 ${results}/* \${line.separator}
includeRefid="stub.includes.fileset.test"
emitter="com.jogamp.gluegen.procaddress.ProcAddressEmitter"
dumpCPP="false"
- debug="false">
+ debug="false"
+ logLevel="WARNING">
<classpath refid="gluegen.classpath" />
</gluegen>
</target>
@@ -579,21 +627,18 @@ chmod 644 ${results}/* \${line.separator}
<!-- Windows hacks ro make a proper DLL -->
<linker id="linker.test1.dll.cfg.id" extends="${linker.cfg.id}">
- <linkerarg value="-Wl,-soname=test1.dll" if="isMingW"/>
- <linkerarg value="-Wl,--output=test1.dll" if="isMingW"/>
</linker>
<c.build c.compiler.src.files="junit.test1i.c.src.files"
output.lib.name="test1"
compiler.cfg.id="${compiler.cfg.id}"
linker.cfg.id="linker.test1.dll.cfg.id"/>
+
</target>
<!-- this is a fixed binding to the test1 implementation -->
<target name="junit.test1p1.c.build">
<linker id="linker.test1.fixed.cfg.id" extends="${linker.cfg.id}">
- <linkerarg value="-Wl,-soname=Bindingtest1p1.dll" if="isMingW"/>
- <linkerarg value="-Wl,--output=Bindingtest1p1.dll" if="isMingW"/>
<syslibset dir="${build_t.lib}" libs="test1"/>
</linker>
@@ -609,18 +654,11 @@ chmod 644 ${results}/* \${line.separator}
output.lib.name="Bindingtest1p1"
compiler.cfg.id="${compiler.cfg.id}"
linker.cfg.id="linker.test1.fixed.cfg.id"/>
-
- <antcall target="rename.dylib" inheritRefs="true">
- <param name="src" value="${build_t.lib}/libBindingtest1p1.dylib" />
- <param name="dest" value="${build_t.lib}/libBindingtest1p1.jnilib" />
- </antcall>
</target>
<!-- this is a dynamic lookup binding to the test1 implementation -->
<target name="junit.test1p2.c.build">
<linker id="linker.test1.runtime.cfg.id" extends="${linker.cfg.id}">
- <linkerarg value="-Wl,-soname=Bindingtest1p2.dll" if="isMingW"/>
- <linkerarg value="-Wl,--output=Bindingtest1p2.dll" if="isMingW"/>
</linker>
<patternset id="junit.test1p2.c.src.files">
@@ -635,12 +673,6 @@ chmod 644 ${results}/* \${line.separator}
output.lib.name="Bindingtest1p2"
compiler.cfg.id="${compiler.cfg.id}"
linker.cfg.id="linker.test1.runtime.cfg.id"/>
-
- <antcall target="rename.dylib" inheritRefs="true">
- <param name="src" value="${build_t.lib}/libBindingtest1p2.dylib" />
- <param name="dest" value="${build_t.lib}/libBindingtest1p2.jnilib" />
- </antcall>
-
</target>
<!--
@@ -649,6 +681,108 @@ chmod 644 ${results}/* \${line.separator}
-->
+ <target name="junit.test2.java.generate">
+ <echo message=" - - - junit.test2.java.generate" />
+
+ <dirset id="stub.includes.fileset.test" dir=".">
+ <include name="${test.junit.generation.dir}/**"/>
+ <include name="${stub.includes.dir}/gluegen" />
+ <include name="${stub.includes.dir}/macosx" />
+ <include name="${stub.includes.dir}/unix" />
+ <include name="${stub.includes.dir}/windows" />
+ </dirset>
+
+ <gluegen src="${test.junit.generation.dir}/test2.h"
+ outputRootDir="${build_t.gen}"
+ config="${test.junit.generation.dir}/test2-if.cfg"
+ literalInclude="${test.junit.generation.dir}"
+ includeRefid="stub.includes.fileset.test"
+ emitter="com.jogamp.gluegen.JavaEmitter"
+ dumpCPP="false"
+ debug="false"
+ logLevel="WARNING">
+ <classpath refid="gluegen.classpath" />
+ </gluegen>
+ <antcall target="java.generate.copy2temp" inheritRefs="true" />
+
+ <gluegen src="${test.junit.generation.dir}/test2.h"
+ outputRootDir="${build_t.gen}"
+ config="${test.junit.generation.dir}/test2p1.cfg"
+ literalInclude="${test.junit.generation.dir}"
+ includeRefid="stub.includes.fileset.test"
+ emitter="com.jogamp.gluegen.JavaEmitter"
+ dumpCPP="false"
+ debug="false"
+ logLevel="WARNING">
+ <classpath refid="gluegen.classpath" />
+ </gluegen>
+
+ <gluegen src="${test.junit.generation.dir}/test2.h"
+ outputRootDir="${build_t.gen}"
+ config="${test.junit.generation.dir}/test2p2.cfg"
+ literalInclude="${test.junit.generation.dir}"
+ includeRefid="stub.includes.fileset.test"
+ emitter="com.jogamp.gluegen.procaddress.ProcAddressEmitter"
+ dumpCPP="false"
+ debug="false"
+ logLevel="WARNING">
+ <classpath refid="gluegen.classpath" />
+ </gluegen>
+ </target>
+
+ <target name="junit.test2.c.build" depends="junit.test2i.c.build, junit.test2p1.c.build, junit.test2p2.c.build" unless="build.javaonly" />
+
+ <!-- this is the test2 implementation -->
+ <target name="junit.test2i.c.build">
+ <patternset id="junit.test2i.c.src.files">
+ <include name="src/junit/${test.junit.generation.rel}/test2.c"/>
+ </patternset>
+
+ <!-- Windows hacks ro make a proper DLL -->
+ <linker id="linker.test2.dll.cfg.id" extends="${linker.cfg.id}">
+ </linker>
+
+ <c.build c.compiler.src.files="junit.test2i.c.src.files"
+ output.lib.name="test2"
+ compiler.cfg.id="${compiler.cfg.id}"
+ linker.cfg.id="linker.test2.dll.cfg.id"/>
+
+ </target>
+
+ <!-- this is a fixed binding to the test2p1 implementation -->
+ <target name="junit.test2p1.c.build">
+ <linker id="linker.test2.fixed.cfg.id" extends="${linker.cfg.id}">
+ <syslibset dir="${build_t.lib}" libs="test2"/>
+ </linker>
+
+ <patternset id="junit.test2p1.c.src.files">
+ <include name="${build_t.gen.rootrel}/native/Bindingtest2p1Impl_JNI.c"/>
+ <include name="${build_t.gen.rootrel}/native/T2_InitializeOptions_JNI.c"/>
+ </patternset>
+
+ <c.build c.compiler.src.files="junit.test2p1.c.src.files"
+ output.lib.name="Bindingtest2p1"
+ compiler.cfg.id="${compiler.cfg.id}"
+ linker.cfg.id="linker.test2.fixed.cfg.id"/>
+ </target>
+
+ <!-- this is a dynamic lookup binding to the test2p2 implementation -->
+ <target name="junit.test2p2.c.build">
+ <linker id="linker.test2.runtime.cfg.id" extends="${linker.cfg.id}">
+ </linker>
+
+ <patternset id="junit.test2p2.c.src.files">
+ <include name="${build_t.gen.rootrel}/native/Bindingtest2p2Impl_JNI.c"/>
+ <include name="${build_t.gen.rootrel}/native/T2_InitializeOptions_JNI.c"/>
+ </patternset>
+
+ <c.build c.compiler.src.files="junit.test2p2.c.src.files"
+ output.lib.name="Bindingtest2p2"
+ compiler.cfg.id="${compiler.cfg.id}"
+ linker.cfg.id="linker.test2.runtime.cfg.id"/>
+ </target>
+
+
<!-- updates / create the test results zip file -->
<target name="test-zip-archive" depends="init">
<archive.7z destfile="${build}/${test.archive.name}.7z"
diff --git a/make/build.xml b/make/build.xml
index 534f122..2d5b739 100644
--- a/make/build.xml
+++ b/make/build.xml
@@ -31,6 +31,13 @@
This requires the user-defined "antlr.jar" property. -->
<path id="cc_gluegen.classpath">
<pathelement location="${antlr.jar}" />
+ <pathelement location="${semver.jar}" />
+ </path>
+ <path id="javadoc_gluegen.classpath">
+ <pathelement location="${ant.jar}" />
+ <pathelement location="${antlr.jar}" />
+ <pathelement location="${semver.jar}" />
+ <pathelement location="${gluegen.jar}" />
</path>
</target>
@@ -53,12 +60,15 @@
<!-- 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/" />
+ <!-- property name="javadoc.link" value="http://docs.oracle.com/javase/6/docs/api/" /-->
+ <property name="javadoc.link" value="https://docs.oracle.com/javase/8/docs/api/" />
<!-- The source and build directories. -->
<property name="project.root" value=".." />
<property name="src.java" value="${project.root}/src/java" />
<property name="src.antlr" value="${project.root}/src/antlr" />
+ <property name="src.jcpp" value="${project.root}/jcpp/src/main/java" />
+
<property name="build" location="${project.root}/${rootrel.build}" />
<property name="javadoc.root.path" location="${build}/javadoc" />
<property name="javadoc.gluegen.path" location="${javadoc.root.path}/gluegen/javadoc" />
@@ -84,6 +94,12 @@
<property name="gluegen.version" value="${jogamp.version.base}-b${gluegen.build.number}-${version.timestamp}" />
+ <delete includeEmptyDirs="false">
+ <fileset dir="${project.root}" includes="make/GnuCTreeParserTokenTypes.txt make/STDCTokenTypes.txt" />
+ </delete>
+ <echo message="gluegen.build.branch ${gluegen.build.branch}"/>
+ <echo message="gluegen.build.commit ${gluegen.build.commit}"/>
+
<property name="stub.includes.dir" value="stub_includes" /> <!-- NOTE: this MUST be relative for FileSet -->
<!-- The generated source directories. -->
@@ -93,6 +109,9 @@
<!-- The compiler output directories. -->
<property name="classes" value="${build}/classes" />
+ <pathconvert targetos="unix" property="classes.unix">
+ <path location="${classes}"/>
+ </pathconvert>
<!-- Call the external config validator script to make sure the config is ok and consistent -->
<ant antfile="validate-properties.xml" inheritall="true"/>
@@ -125,8 +144,6 @@
<property name="c.grammar.out.dir" value="${src.generated.java}/com/jogamp/gluegen/cgram" />
<property name="j.grammar.out.dir" value="${src.generated.java}/com/jogamp/gluegen/jgram" />
- <property name="tools.jar" value="${java.home}/../lib/tools.jar"/>
-
<property name="archive.name" value="gluegen-${gluegen.version}-${os.and.arch}" />
<property name="archive" value="${build}/${archive.name}" />
@@ -138,8 +155,10 @@
<!-- property name="java.part.awt" value="com/jogamp/common/util/awt/** jogamp/common/awt/**"/-->
<property name="java.part.awt" value="com/jogamp/common/util/awt/**"/>
+ <property name="java.part.nonjava" value="com/jogamp/common/util/bin/*" />
<property name="gluegen-rt.classes" value="com/jogamp/gluegen/runtime/**"/>
<property name="jogamp.common.classes" value="com/jogamp/common/** jogamp/common/**"/>
+ <property name="java.part.jcpp" value="com/jogamp/gluegen/jcpp/**"/>
<property name="gluegen.excludes.all" value="${gluegen.excludes.nsig} ${jogamp-android-launcher.classes}" />
</target>
@@ -245,7 +264,6 @@
<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" >
<property name="c.src.dir.os" value="windows" />
- <property name="java.includes.dir.platform" value="${java.includes.dir}/win32" />
</target>
<target name="declare.linux.x86" if="isLinuxX86">
@@ -272,6 +290,12 @@
<property name="linker.cfg.id" value="linker.cfg.linux.armv6" />
</target>
+ <target name="declare.linux.aarch64" if="isLinuxARM64">
+ <echo message="Linux.aarch64" />
+ <property name="compiler.cfg.id" value="compiler.cfg.linux.aarch64" />
+ <property name="linker.cfg.id" value="linker.cfg.linux.aarch64" />
+ </target>
+
<target name="declare.linux.alpha" if="isLinuxAlpha">
<echo message="Linux.alpha" />
<property name="compiler.cfg.id" value="compiler.cfg.linux" />
@@ -302,6 +326,24 @@
<property name="linker.cfg.id" value="linker.cfg.linux.ppc" />
</target>
+ <target name="declare.linux.ppc64" if="isLinuxPpc64">
+ <echo message="Linux.ppc64" />
+ <property name="compiler.cfg.id" value="compiler.cfg.linux" />
+ <property name="linker.cfg.id" value="linker.cfg.linux.ppc64" />
+ </target>
+
+ <target name="declare.linux.ppc64le" if="isLinuxPpc64le">
+ <echo message="Linux.ppc64le" />
+ <property name="compiler.cfg.id" value="compiler.cfg.linux" />
+ <property name="linker.cfg.id" value="linker.cfg.linux.ppc64le" />
+ </target>
+
+ <target name="declare.linux.riscv64" if="isLinuxRiscV64">
+ <echo message="Linux.riscv64" />
+ <property name="compiler.cfg.id" value="compiler.cfg.linux" />
+ <property name="linker.cfg.id" value="linker.cfg.linux.riscv64" />
+ </target>
+
<target name="declare.linux.s390" if="isLinuxs390">
<echo message="Linux.s390" />
<property name="compiler.cfg.id" value="compiler.cfg.linux" />
@@ -320,9 +362,8 @@
<property name="linker.cfg.id" value="linker.cfg.linux.sparc" />
</target>
- <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" if="isLinux" >
+ <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.ppc64,declare.linux.ppc64le,declare.linux.riscv64,declare.linux.s390,declare.linux.s390x,declare.linux.sparc,declare.linux.armv6,declare.linux.aarch64" if="isLinux" >
<property name="c.src.dir.os" value="unix" />
- <property name="java.includes.dir.platform" value="${java.includes.dir}/linux" />
</target>
<target name="declare.android" if="isAndroid" >
@@ -349,7 +390,6 @@
<target name="declare.solaris" depends="declare.solaris32,declare.solarisSparcv9,declare.solarisAMD64" if="isSolaris" >
<property name="c.src.dir.os" value="unix" />
- <property name="java.includes.dir.platform" value="${java.includes.dir}/solaris" />
</target>
<target name="declare.macosx" if="isOSX">
@@ -359,6 +399,20 @@
<property name="c.src.dir.os" value="unix" />
</target>
+ <target name="declare.ios.amd64" if="isIOSAmd64">
+ <echo message="IOSAmd64" />
+ <property name="compiler.cfg.id" value="compiler.cfg.ios.amd64" />
+ <property name="linker.cfg.id" value="linker.cfg.ios.amd64" />
+ <property name="c.src.dir.os" value="unix" />
+ </target>
+
+ <target name="declare.ios.arm64" if="isIOSArm64">
+ <echo message="IOSArm64" />
+ <property name="compiler.cfg.id" value="compiler.cfg.ios.arm64" />
+ <property name="linker.cfg.id" value="linker.cfg.ios.arm64" />
+ <property name="c.src.dir.os" value="unix" />
+ </target>
+
<target name="declare.freebsd.amd64" if="isFreeBSDAMD64">
<echo message="FreeBSDAMD64" />
<property name="compiler.cfg.id" value="compiler.cfg.freebsd" />
@@ -375,7 +429,6 @@
<target name="declare.freebsd" depends="declare.freebsd.x86,declare.freebsd.amd64" if="isFreeBSD" >
<property name="c.src.dir.os" value="unix" />
- <property name="java.includes.dir.platform" value="${java.includes.dir}/freebsd" />
</target>
<target name="declare.hpux" if="isHPUX">
@@ -383,61 +436,51 @@
<property name="compiler.cfg.id" value="compiler.cfg.hpux" />
<property name="linker.cfg.id" value="linker.cfg.hpux" />
<property name="c.src.dir.os" value="unix" />
- <property name="java.includes.dir.hpux" value="${java.includes.dir}/hp-ux" />
</target>
- <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" />
-
- <target name="c.rename.lib.mingw" if="isMingW">
- <!-- FIXME: this is a hack; the cpptask should have an option to change the
- suffix or at least understand the override from .so to .dll -->
- <move file="${build}/obj/libgluegen-rt.so" tofile="${build}/obj/gluegen-rt.dll" />
- </target>
-
- <target name="c.rename.lib.macosx" if="isOSX">
- <move file="${build}/obj/libgluegen-rt.dylib" tofile="${build}/obj/libgluegen-rt.jnilib" />
- <copy file="${build}/obj/libgluegen-rt.jnilib" tofile="${build}/obj/libgluegen-rt.so" />
- </target>
+ <target name="c.configure" depends="gluegen.cpptasks.detect.os,gluegen.cpptasks.setup.compiler,declare.win32,declare.linux,declare.android,declare.solaris,declare.macosx,declare.ios.amd64,declare.ios.arm64,declare.freebsd,declare.hpux,gluegen.cpptasks.configure.compiler" />
<target name="c.manifest" if="isVC8Family">
<!-- exec mt, the Microsoft Manifest Tool, to include DLL manifests in order to resolve the location of msvcr80.dll -->
- <msvc.manifest objdir="${build}/obj" dllname="gluegen-rt" />
+ <msvc.manifest objdir="${build}/obj" dllname="gluegen_rt" />
</target>
- <target name="gluegen.build.c" depends="init, c.configure" unless="build.javaonly" >
+ <target name="gluegen.build.native" depends="init, c.configure" >
<property name="c.compiler.src.files.common" value="src/native/common/*.c" />
<property name="c.compiler.src.files.os" value="src/native/${c.src.dir.os}/*.c" />
- <property name="output.lib.name" value="gluegen-rt" />
- <condition property="output.lib.name.os" value="lib${output.lib.name}.so"><isset property="isUnix"/></condition>
- <condition property="output.lib.name.os" value="${output.lib.name}.dll"><isset property="isWindows"/></condition>
- <condition property="output.lib.name.os" value="lib${output.lib.name}.jnilib"><isset property="isOSX"/></condition>
+ <property name="output.lib.name" value="gluegen_rt" /> <!-- dash replaced by underscore to allow static linkage via JEP 178 -->
+ <property name="output.lib.name.os" value="${native.library.prefix}${output.lib.name}.${native.library.suffix}" />
- <uptodate property="gluegen.build.skip.c">
+ <uptodate property="gluegen.build.skip.native">
<srcfiles dir= "${project.root}" includes="${c.compiler.src.files.os}"/>
<srcfiles dir= "${project.root}" includes="${c.compiler.src.files.common}"/>
<mapper type="merge" to="${gluegen.lib.dir}/${output.lib.name.os}"/>
</uptodate>
+ <condition property="gluegen.package.native.done" value="true">
+ <isset property="gluegen.build.skip.native"/>
+ </condition>
<antcall target="gluegen.build.c.impl" inheritAll="true" inheritRefs="true" />
</target>
- <target name="gluegen.build.c.impl" depends="init, c.configure" unless="gluegen.build.skip.c">
+ <target name="gluegen.build.c.impl" depends="init, c.configure" unless="gluegen.build.skip.native">
+ <echo message="clearing gluegen.build.shasum.done (2) - was ${gluegen.build.shasum.done}"/>
+ <var name="gluegen.build.shasum.done" unset="true"/>
+ <var name="gluegen.package.native.done" unset="true"/>
<fail message="Requires '${compiler.cfg.id}'" unless="compiler.cfg.id"/>
<fail message="Requires '${linker.cfg.id}'" unless="linker.cfg.id"/>
- <javah destdir="${src.generated.c}" classpath="${classes}" class="com.jogamp.common.os.Platform, com.jogamp.common.nio.PointerBuffer, jogamp.common.jvm.JVMUtil, com.jogamp.common.util.JarUtil, jogamp.common.os.MachineDescriptionRuntime" />
- <javah destdir="${src.generated.c}/Unix" classpath="${classes}" class="jogamp.common.os.UnixDynamicLinkerImpl" />
- <javah destdir="${src.generated.c}/Windows" classpath="${classes}" class="jogamp.common.os.WindowsDynamicLinkerImpl"/>
-
- <echo message="Output lib name = ${output.lib.name} -> ${output.lib.name.os}" />
+ <echo message="Output lib name = ${output.lib.name} -> ${output.lib.name.os} [${output.lib.type}]" />
<mkdir dir="${gluegen.lib.dir}"/>
<echo message="Compiling ${c.compiler.src.files.os} ${c.compiler.src.files.common}" />
<echo message="user.dir=${user.dir}" />
- <cc outtype="shared"
+ <cc outtype="${output.lib.type}"
+ usehighleveltool="true"
+ writesoname="true"
objdir="${gluegen.lib.dir}"
outfile="${gluegen.lib.dir}/${output.lib.name}"
optimize="${c.compiler.optimise}"
@@ -469,26 +512,50 @@
<includepath path="${src.generated.c}" />
<includepath path="${src.generated.c}/Unix" if="isUnix"/>
<includepath path="${src.generated.c}/Unix" if="isOSX"/>
+ <includepath path="${src.generated.c}/Unix" if="isIOS"/>
<includepath path="${src.generated.c}/Windows" if="isWindows"/>
</compiler>
<linker extends="${linker.cfg.id}" />
+
</cc>
- <antcall target="c.rename.lib.mingw" inheritRefs="true" />
- <antcall target="c.rename.lib.macosx" inheritRefs="true" />
+ <gluegen.make.libsymbols builddir="${build}"
+ nativelib="${gluegen.lib.dir}/${output.lib.name.os}"
+ symbolsfile="${gluegen.lib.dir}/${native.library.prefix}${output.lib.name}.symbols" />
<antcall target="gluegen.cpptasks.striplibs" inheritRefs="true">
<param name="libdir" value="${gluegen.lib.dir}"/>
</antcall>
<antcall target="c.manifest" inheritRefs="true" />
+ </target>
+
+ <target name="gluegen.package.native" depends="init, c.configure" unless="gluegen.package.native.done" >
+ <property name="gluegen.package.native.done" value="true" />
+ <copy file="Manifest-rt-natives"
+ tofile="${build}/Manifest-rt-natives.temp"
+ overwrite="true">
+ <filterset>
+ <filter token="VERSION" value="${jogamp.version}"/>
+ <filter token="BUILD_VERSION" value="${gluegen.version}"/>
+ <filter token="SCM_BRANCH" value="${gluegen.build.branch}"/>
+ <filter token="SCM_COMMIT" value="${gluegen.build.commit}"/>
+ <filter token="SHA_SOURCES" value="${gluegen.build.sha.sources}"/>
+ <filter token="SHA_CLASSES" value="${gluegen.build.sha.classes}"/>
+ <filter token="SHA_CLASSES_THIS" value="0"/>
+ <filter token="SHA_NATIVES" value="${gluegen.build.sha.natives}"/>
+ <filter token="SHA_NATIVES_THIS" value="${gluegen.build.sha.natives}"/>
+ <filter token="BASEVERSION" value="${jogamp.version.base}"/>
+ <filter token="JAR_CODEBASE_TAG" value="${jogamp.jar.codebase}"/>
+ </filterset>
+ </copy>
<native.tag.jar objdir="${build}/obj"
nativejarfile="${build}/gluegen-rt-natives-${os.and.arch}.jar"
manifestfile="${build}/Manifest-rt-natives.temp"
module="common"
- includelibs="*gluegen-rt.${native.library.suffix}" />
+ includelibs="*${output.lib.name}.${native.library.suffix}" />
<!-- Produce duplicates for different configurations, since non-native-jar aliasing (Bug 1023/Bug 1024) -->
<copy file="${build}/gluegen-rt-natives-${os.and.arch}.jar" tofile="${build}/gluegen-rt-android-natives-${os.and.arch}.jar"/>
@@ -602,6 +669,7 @@
<uptodate property="gluegen.build.skip.java1">
<srcfiles dir= "." includes="*.xml"/>
<srcfiles dir= "${src.java}" includes="**"/>
+ <srcfiles dir= "${src.jcpp}" includes="**"/>
<srcfiles dir= "${c.grammar}" includes="*.g"/>
<srcfiles dir= "${j.grammar}" includes="*.g"/>
<mapper type="merge" to="${build}/gluegen.jar"/>
@@ -609,6 +677,7 @@
<uptodate property="gluegen.build.skip.java2">
<srcfiles dir= "." includes="*.xml"/>
<srcfiles dir= "${src.java}" includes="**"/>
+ <srcfiles dir= "${src.jcpp}" includes="**"/>
<srcfiles dir= "${c.grammar}" includes="*.g"/>
<srcfiles dir= "${j.grammar}" includes="*.g"/>
<mapper type="merge" to="${build}/gluegen-rt.jar"/>
@@ -630,7 +699,7 @@
-->
<target name="generate.java">
<!-- Generate the Java files -->
- <antlr target="${output.dir}/${target}" outputdirectory="${output.dir}">
+ <antlr target="${output.dir}/${target}" outputdirectory="${output.dir}" debug="no" trace="no">
<classpath refid="antlr.classpath" />
</antlr>
</target>
@@ -646,7 +715,7 @@
-->
<target name="generate.java.override">
<!-- Generate the Java files -->
- <antlr target="${output.dir}/${target}" glib="${output.dir}/${override}" outputdirectory="${output.dir}">
+ <antlr target="${output.dir}/${target}" glib="${output.dir}/${override}" outputdirectory="${output.dir}" debug="no" trace="no">
<classpath refid="antlr.classpath" />
</antlr>
</target>
@@ -700,13 +769,15 @@
</antcall>
<!-- Build GlueGen using the generated Java files along with the
- - original source. -->
+ original source in multiple stages below. -->
- <!-- Compile gluegen-rt first -->
+ <!-- Compile gluegen-rt first including generation of native headers -->
+ <!-- This has a hard Java8 target spec requirement: source, target + bootclasspath -->
<javac destdir="${classes}"
includeAntRuntime="false"
includes="${gluegen-rt.classes} ${jogamp.common.classes}"
excludes="${gluegen.excludes.all} ${java.part.android}"
+ nativeheaderdir="${src.generated.c}"
memoryMaximumSize="${javac.memorymax}"
encoding="UTF-8"
source="${target.sourcelevel}"
@@ -716,15 +787,22 @@
<src path="${src.java}" />
<src path="${src.generated.java}" />
<classpath refid="cc_gluegen.classpath" />
+ <!-- compilerarg line="release ${target.releaselevel}"/ -->
</javac>
- <!-- Compile gluegen (compile time).
+ <!-- move platform-specific native headers into the right directories -->
+ <move file="${src.generated.c}/jogamp_common_os_UnixDynamicLinkerImpl.h" todir="${src.generated.c}/Unix" failonerror="false" quiet="true"/>
+ <move file="${src.generated.c}/jogamp_common_os_WindowsDynamicLinkerImpl.h" todir="${src.generated.c}/Windows" failonerror="false" quiet="true"/>
- Uses host.rt.jar, since we require 'com.sun.tools.doclets.Taglet',
- w/o it breaks build on OSX w/ Java6 compiler.
- Surprisingly it works on other platforms, which seems to pick classes
- outside of the 'bootclasspath'.
- -->
+ <!-- make non-java code available in classpath -->
+ <copy todir="${classes}">
+ <fileset dir="${src.java}"
+ includes="${java.part.nonjava}"
+ excludes="**/*.java"/>
+ </copy>
+
+ <!-- Compile gluegen (compile time). -->
+ <!-- This has a soft Java8 bytecote target only (Using some build time APIs): target -->
<javac destdir="${classes}"
includeAntRuntime="true"
excludes="${gluegen.excludes.all} ${gluegen-rt.classes} ${java.part.android}"
@@ -732,13 +810,28 @@
encoding="UTF-8"
source="${target.sourcelevel}"
target="${target.targetlevel}"
- bootclasspath="${host.rt.jar}"
debug="${javacdebug}" debuglevel="${javacdebuglevel}">
+ <src path="${src.jcpp}" />
<src path="${src.java}" />
<src path="${src.generated.java}" />
<classpath refid="cc_gluegen.classpath" />
</javac>
+ </target>
+
+ <target name="gluegen.package.javase">
+ <java classname="com.jogamp.common.util.SHASum" logError="true" failonerror="true" fork="true" newenvironment="true"
+ classpath="${classes}"
+ outputproperty="gluegen.build.sha.classes.gluegen">
+ <sysproperty key="java.library.path" value="${gluegen.lib.dir}"/>
+ <arg value="--include"/>
+ <arg value="${classes.unix}/.*\.class"/>
+
+ <arg value="--exclude"/>
+ <arg value="${classes.unix}/jogamp/android/launcher"/>
+
+ <arg value="${classes.unix}"/>
+ </java>
<copy file="Manifest"
tofile="${build}/Manifest.temp"
overwrite="true">
@@ -747,6 +840,11 @@
<filter token="BUILD_VERSION" value="${gluegen.version}"/>
<filter token="SCM_BRANCH" value="${gluegen.build.branch}"/>
<filter token="SCM_COMMIT" value="${gluegen.build.commit}"/>
+ <filter token="SHA_SOURCES" value="${gluegen.build.sha.sources}"/>
+ <filter token="SHA_CLASSES" value="${gluegen.build.sha.classes}"/>
+ <filter token="SHA_CLASSES_THIS" value="${gluegen.build.sha.classes.gluegen}"/>
+ <filter token="SHA_NATIVES" value="${gluegen.build.sha.natives}"/>
+ <filter token="SHA_NATIVES_THIS" value="0"/>
<filter token="BASEVERSION" value="${jogamp.version.base}"/>
<filter token="JAR_CODEBASE_TAG" value="${jogamp.jar.codebase}"/>
</filterset>
@@ -766,6 +864,27 @@
</fileset>
</jar>
+ <java classname="com.jogamp.common.util.SHASum" logError="true" failonerror="true" fork="true" newenvironment="true"
+ classpath="${classes}"
+ outputproperty="gluegen.build.sha.classes.gluegen-rt">
+ <sysproperty key="java.library.path" value="${gluegen.lib.dir}"/>
+
+ <arg value="--include"/>
+ <arg value="${classes.unix}/com/jogamp/gluegen/runtime/.*\.class" />
+ <arg value="--include"/>
+ <arg value="${classes.unix}/com/jogamp/common/.*" />
+ <arg value="--include"/>
+ <arg value="${classes.unix}/jogamp/common/.*" />
+
+ <arg value="--exclude"/>
+ <arg value="${classes.unix}/jogamp/android/launcher"/>
+ <arg value="--exclude"/>
+ <arg value="${classes.unix}/jogamp/common/os/android" />
+ <arg value="--exclude"/>
+ <arg value="${classes.unix}/com/jogamp/gluegen/jcpp" />
+
+ <arg value="${classes.unix}"/>
+ </java>
<copy file="Manifest-rt"
tofile="${build}/Manifest-rt.temp"
overwrite="true">
@@ -774,32 +893,11 @@
<filter token="BUILD_VERSION" value="${gluegen.version}"/>
<filter token="SCM_BRANCH" value="${gluegen.build.branch}"/>
<filter token="SCM_COMMIT" value="${gluegen.build.commit}"/>
- <filter token="BASEVERSION" value="${jogamp.version.base}"/>
- <filter token="JAR_CODEBASE_TAG" value="${jogamp.jar.codebase}"/>
- </filterset>
- </copy>
-
- <!-- copy file="Manifest-rt-alt"
- tofile="${build}/Manifest-rt-alt.temp"
- overwrite="true">
- <filterset>
- <filter token="VERSION" value="${jogamp.version}"/>
- <filter token="BUILD_VERSION" value="${gluegen.version}"/>
- <filter token="SCM_BRANCH" value="${gluegen.build.branch}"/>
- <filter token="SCM_COMMIT" value="${gluegen.build.commit}"/>
- <filter token="BASEVERSION" value="${jogamp.version.base}"/>
- <filter token="JAR_CODEBASE_TAG" value="${jogamp.jar.codebase}"/>
- </filterset>
- </copy -->
-
- <copy file="Manifest-rt-natives"
- tofile="${build}/Manifest-rt-natives.temp"
- overwrite="true">
- <filterset>
- <filter token="VERSION" value="${jogamp.version}"/>
- <filter token="BUILD_VERSION" value="${gluegen.version}"/>
- <filter token="SCM_BRANCH" value="${gluegen.build.branch}"/>
- <filter token="SCM_COMMIT" value="${gluegen.build.commit}"/>
+ <filter token="SHA_SOURCES" value="${gluegen.build.sha.sources}"/>
+ <filter token="SHA_CLASSES" value="${gluegen.build.sha.classes}"/>
+ <filter token="SHA_CLASSES_THIS" value="${gluegen.build.sha.classes.gluegen-rt}"/>
+ <filter token="SHA_NATIVES" value="${gluegen.build.sha.natives}"/>
+ <filter token="SHA_NATIVES_THIS" value="0"/>
<filter token="BASEVERSION" value="${jogamp.version.base}"/>
<filter token="JAR_CODEBASE_TAG" value="${jogamp.jar.codebase}"/>
</filterset>
@@ -813,12 +911,30 @@
<include name="jogamp/common/**" />
<exclude name="${jogamp-android-launcher.classes}" />
<exclude name="${java.part.android}" />
+ <exclude name="${java.part.jcpp}" />
</fileset>
<fileset dir="resources/assets">
<include name="**" />
</fileset>
</jar>
+ <!-- copy file="Manifest-rt-alt"
+ tofile="${build}/Manifest-rt-alt.temp"
+ overwrite="true">
+ <filterset>
+ <filter token="VERSION" value="${jogamp.version}"/>
+ <filter token="BUILD_VERSION" value="${gluegen.version}"/>
+ <filter token="SCM_BRANCH" value="${gluegen.build.branch}"/>
+ <filter token="SCM_COMMIT" value="${gluegen.build.commit}"/>
+ <filter token="SHA_SOURCES" value="${gluegen.build.sha.sources}"/>
+ <filter token="SHA_CLASSES" value="${gluegen.build.sha.classes}"/>
+ <filter token="SHA_CLASSES_THIS" value="${gluegen.build.sha.classes.gluegen-rt-alt}"/>
+ <filter token="SHA_NATIVES" value="${gluegen.build.sha.natives}"/>
+ <filter token="SHA_NATIVES_THIS" value="0"/>
+ <filter token="BASEVERSION" value="${jogamp.version.base}"/>
+ <filter token="JAR_CODEBASE_TAG" value="${jogamp.jar.codebase}"/>
+ </filterset>
+ </copy -->
<!-- Build gluegen-rt-alt.jar. -->
<!-- jar destfile="${build}/gluegen-rt-alt.jar" manifest="${build}/Manifest-rt-alt.temp">
<fileset dir="${classes}">
@@ -827,12 +943,49 @@
<include name="jogamp/common/**" />
<exclude name="${jogamp-android-launcher.classes}" />
<exclude name="${java.part.android}" />
+ <exclude name="${java.part.jcpp}" />
</fileset>
<fileset dir="resources/assets">
<include name="**" />
</fileset>
</jar -->
+ <copy file="jogamp-fat.mf"
+ tofile="${build}/jogamp-fat.mf"
+ overwrite="true">
+ <filterset>
+ <filter token="VERSION" value="${jogamp.version}"/>
+ <filter token="BUILD_VERSION" value="${gluegen.version}"/>
+ <filter token="SCM_BRANCH" value="${gluegen.build.branch}"/>
+ <filter token="SCM_COMMIT" value="${gluegen.build.commit}"/>
+ <filter token="SHA_SOURCES" value="${gluegen.build.sha.sources}"/>
+ <filter token="SHA_CLASSES" value="${gluegen.build.sha.classes}"/>
+ <filter token="SHA_CLASSES_THIS" value="${gluegen.build.sha.classes}"/>
+ <filter token="SHA_NATIVES" value="${gluegen.build.sha.natives}"/>
+ <filter token="SHA_NATIVES_THIS" value="${gluegen.build.sha.natives}"/>
+ <filter token="BASEVERSION" value="${jogamp.version.base}"/>
+ <filter token="JAR_CODEBASE_TAG" value="${jogamp.jar.codebase}"/>
+ </filterset>
+ </copy>
+
+ <copy file="jogamp-fat-test.mf"
+ tofile="${build}/jogamp-fat-test.mf"
+ overwrite="true">
+ <filterset>
+ <filter token="VERSION" value="${jogamp.version}"/>
+ <filter token="BUILD_VERSION" value="${gluegen.version}"/>
+ <filter token="SCM_BRANCH" value="${gluegen.build.branch}"/>
+ <filter token="SCM_COMMIT" value="${gluegen.build.commit}"/>
+ <filter token="SHA_SOURCES" value="${gluegen.build.sha.sources}"/>
+ <filter token="SHA_CLASSES" value="${gluegen.build.sha.classes}"/>
+ <filter token="SHA_CLASSES_THIS" value="${gluegen.build.sha.classes}"/>
+ <filter token="SHA_NATIVES" value="${gluegen.build.sha.natives}"/>
+ <filter token="SHA_NATIVES_THIS" value="${gluegen.build.sha.natives}"/>
+ <filter token="BASEVERSION" value="${jogamp.version.base}"/>
+ <filter token="JAR_CODEBASE_TAG" value="${jogamp.jar.codebase}"/>
+ </filterset>
+ </copy>
+
<!-- Copy antlr.jar into build directory for convenience so
gluegen.jar can be run via "java -jar". antlr.jar is
referenced via a Class-Path entry in the Manifest of
@@ -852,6 +1005,7 @@
<target name="gluegen.build.android" if="android-jars.available">
<!--compile gluegen-rt-android last-->
+ <!-- This has a hard Java8 target spec requirement: source, target + bootclasspath -->
<javac destdir="${classes}"
includeAntRuntime="false"
includes="${gluegen-rt.classes} ${jogamp.common.classes}"
@@ -866,7 +1020,28 @@
<src path="${src.generated.java}" />
<classpath refid="cc_gluegen_android.classpath" />
</javac>
-
+ </target>
+
+ <target name="gluegen.package.android" if="android-jars.available">
+ <java classname="com.jogamp.common.util.SHASum" logError="true" failonerror="true" fork="true" newenvironment="true"
+ classpath="${classes}"
+ outputproperty="gluegen.build.sha.classes.gluegen-rt-android">
+ <sysproperty key="java.library.path" value="${gluegen.lib.dir}"/>
+
+ <arg value="--include"/>
+ <arg value="${classes.unix}/com/jogamp/gluegen/runtime/.*\.class" />
+ <arg value="--include"/>
+ <arg value="${classes.unix}/com/jogamp/common/.*" />
+ <arg value="--include"/>
+ <arg value="${classes.unix}/jogamp/common/.*" />
+
+ <arg value="--exclude"/>
+ <arg value="${classes.unix}/jogamp/android/launcher"/>
+ <arg value="--exclude"/>
+ <arg value="${classes.unix}/com/jogamp/gluegen/jcpp" />
+
+ <arg value="${classes.unix}"/>
+ </java>
<copy file="Manifest-rt-android"
tofile="${build}/Manifest-rt-android.temp"
overwrite="true">
@@ -875,6 +1050,11 @@
<filter token="BUILD_VERSION" value="${gluegen.version}"/>
<filter token="SCM_BRANCH" value="${gluegen.build.branch}"/>
<filter token="SCM_COMMIT" value="${gluegen.build.commit}"/>
+ <filter token="SHA_SOURCES" value="${gluegen.build.sha.sources}"/>
+ <filter token="SHA_CLASSES" value="${gluegen.build.sha.classes}"/>
+ <filter token="SHA_CLASSES_THIS" value="${gluegen.build.sha.classes.gluegen-rt-android}"/>
+ <filter token="SHA_NATIVES" value="${gluegen.build.sha.natives}"/>
+ <filter token="SHA_NATIVES_THIS" value="0"/>
<filter token="BASEVERSION" value="${jogamp.version.base}"/>
<filter token="JAR_CODEBASE_TAG" value="${jogamp.jar.codebase}"/>
</filterset>
@@ -888,6 +1068,7 @@
<include name="jogamp/common/**" />
<include name="${java.part.android}" />
<exclude name="${jogamp-android-launcher.classes}" />
+ <exclude name="${java.part.jcpp}" />
</fileset>
<fileset dir="resources/assets">
<include name="**" />
@@ -895,13 +1076,62 @@
</jar>
</target>
- <target name="gluegen.build.java" depends="gluegen.cpptasks.detect.os,gluegen.build.check.java" unless="gluegen.build.skip.java">
+ <target name="gluegen.build.java" depends="gluegen.build.java.impl">
+ <condition property="gluegen.package.java.done" value="true">
+ <isset property="gluegen.build.skip.java"/>
+ </condition>
+ </target>
+ <target name="gluegen.build.java.impl" depends="gluegen.cpptasks.detect.os,gluegen.build.check.java" unless="gluegen.build.skip.java">
+ <echo message="clearing gluegen.build.shasum.done (1) - was ${gluegen.build.shasum.done}"/>
+ <var name="gluegen.build.shasum.done" unset="true"/>
+ <var name="gluegen.package.java.done" unset="true"/>
<antcall target="generate-hash-maps" inheritRefs="true"/>
<antcall target="generate-primitive-stacks" inheritRefs="true"/>
<antcall target="gluegen.build.javase" inheritRefs="true"/>
<antcall target="gluegen.build.android" inheritRefs="true"/>
</target>
+ <target name="gluegen.build.shasum" depends="gluegen.cpptasks.detect.os" unless="gluegen.build.shasum.done">
+ <property name="gluegen.build.shasum.done" value="true"/>
+ <java classname="com.jogamp.common.util.SHASum" logError="true" failonerror="true" fork="true" newenvironment="true"
+ classpath="${classes}"
+ outputproperty="gluegen.build.sha.sources">
+ <sysproperty key="java.library.path" value="${gluegen.lib.dir}"/>
+ <!-- jvmarg value="-Djogamp.debug.SHASum"/ -->
+
+ <arg value="--exclude"/>
+ <arg value=".*\.log"/>
+
+ <arg value="--exclude"/>
+ <arg value="../make/lib/toolchain"/>
+
+ <arg value="../src"/>
+ <arg value="../jcpp/src"/>
+ <arg value="../make"/>
+ </java>
+ <java classname="com.jogamp.common.util.SHASum" logError="true" failonerror="true" fork="true" newenvironment="true"
+ classpath="${classes}"
+ outputproperty="gluegen.build.sha.classes">
+ <sysproperty key="java.library.path" value="${gluegen.lib.dir}"/>
+ <arg value="${classes.unix}"/>
+ </java>
+ <java classname="com.jogamp.common.util.SHASum" logError="true" failonerror="true" fork="true" newenvironment="true"
+ classpath="${classes}"
+ outputproperty="gluegen.build.sha.natives">
+ <sysproperty key="java.library.path" value="${gluegen.lib.dir}"/>
+ <arg value="${gluegen.lib.dir}/${output.lib.name.os}"/>
+ </java>
+ <echo message="gluegen.build.sha.sources ${gluegen.build.sha.sources}"/>
+ <echo message="gluegen.build.sha.classes ${gluegen.build.sha.classes}"/>
+ <echo message="gluegen.build.sha.natives ${gluegen.build.sha.natives}"/>
+ </target>
+
+ <target name="gluegen.package.java" depends="gluegen.cpptasks.detect.os" unless="gluegen.package.java.done">
+ <property name="gluegen.package.java.done" value="true"/>
+ <antcall target="gluegen.package.javase" inheritRefs="true"/>
+ <antcall target="gluegen.package.android" inheritRefs="true"/>
+ </target>
+
<target name="gluegen.build.check.android-launcher" depends="init">
<uptodate property="gluegen.build.skip.android-launcher">
<srcfiles dir= "." includes="*.xml"/>
@@ -912,6 +1142,7 @@
</target>
<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">
+ <!-- This has a hard Java8 target spec requirement: source, target + bootclasspath -->
<javac destdir="${classes}"
includeAntRuntime="false"
includes="${jogamp-android-launcher.classes}"
@@ -925,7 +1156,19 @@
<src path="${src.java}" />
<classpath refid="android.classpath" />
</javac>
+ </target>
+
+ <target name="android-launcher.package" depends="android-launcher.build" if="isAndroid" unless="gluegen.build.skip.android-launcher">
+ <java classname="com.jogamp.common.util.SHASum" logError="true" failonerror="true" fork="true" newenvironment="true"
+ classpath="${classes}"
+ outputproperty="gluegen.build.sha.classes.jogamp-android-launcher">
+ <sysproperty key="java.library.path" value="${gluegen.lib.dir}"/>
+
+ <arg value="--include"/>
+ <arg value="${classes.unix}/jogamp/android/launcher/.*"/>
+ <arg value="${classes.unix}/jogamp/android/launcher/"/>
+ </java>
<copy file="Manifest-android-launcher"
tofile="${build}/Manifest-android-launcher.temp"
overwrite="true">
@@ -934,6 +1177,11 @@
<filter token="BUILD_VERSION" value="${gluegen.version}"/>
<filter token="SCM_BRANCH" value="${gluegen.build.branch}"/>
<filter token="SCM_COMMIT" value="${gluegen.build.commit}"/>
+ <filter token="SHA_SOURCES" value="${gluegen.build.sha.sources}"/>
+ <filter token="SHA_CLASSES" value="${gluegen.build.sha.classes}"/>
+ <filter token="SHA_CLASSES_THIS" value="${gluegen.build.sha.classes.jogamp-android-launcher}"/>
+ <filter token="SHA_NATIVES" value="${gluegen.build.sha.natives}"/>
+ <filter token="SHA_NATIVES_THIS" value="0"/>
<filter token="BASEVERSION" value="${jogamp.version.base}"/>
<filter token="JAR_CODEBASE_TAG" value="${jogamp.jar.codebase}"/>
</filterset>
@@ -944,9 +1192,6 @@
<include name="${jogamp-android-launcher.classes}" />
</fileset>
</jar>
- </target>
-
- <target name="android-launcher.package" depends="android-launcher.build" if="isAndroid" unless="gluegen.build.skip.android-launcher">
<aapt.signed
assetsdir="resources/assets-launcher"
jarbuilddir="${build}"
@@ -966,7 +1211,7 @@
<srcfiles dir= "." includes="*.xml"/>
<srcfiles dir= "${src.java}" includes="**"/>
<srcfiles dir= "${src.generated}" includes="**"/>
- <mapper type="merge" to="${build}/gluegen-rt-android-${android.abi}.apk"/>
+ <mapper type="merge" to="${build}/gluegen-rt-${os.and.arch}.apk"/>
</uptodate>
</target>
@@ -977,7 +1222,7 @@
jarbuilddir="${build}"
jarbasename="gluegen-rt-android"
nativebuilddir="${gluegen.lib.dir}"
- nativebasename="gluegen-rt"
+ nativebasename="${output.lib.name}"
android.abi="${android.abi}"
androidmanifest.path="resources/android/AndroidManifest-Runtime.xml"
androidresources.path="resources/android/res"
@@ -987,18 +1232,33 @@
/>
</target>
- <target name="base.compile" description="Base compile ensuring valid build results w/o tampering the artifacts.properties"
- depends="init, android-launcher.package, gluegen.build.java, gluegen.build.c" />
+ <target name="base.compile" description="Base compile ensuring valid build results w/o tampering the artifact.properties"
+ depends="clean-temp, android-launcher.build, gluegen.build.java, gluegen.build.native, gluegen.build.shasum, gluegen.package.java, gluegen.package.native, android-launcher.package" />
- <target name="all.no_junit" description="Release build" depends="init, base.compile, tag.build, android.package, developer-zip-archive" />
- <target name="all" description="Release build" depends="init, base.compile, tag.build, junit.compile, android.package, developer-zip-archive" />
+ <target name="all.no_junit" description="Release build" depends="base.compile, tag.build, android.package, developer-zip-archive" >
+ <antcall target="clean-temp" inheritAll="true" inheritRefs="true" />
+ </target>
+ <target name="all" description="Release build" depends="base.compile, tag.build, junit.compile, android.package, developer-zip-archive" >
+ <antcall target="clean-temp" inheritAll="true" inheritRefs="true" />
+ </target>
- <target name="all.debug" description="Debug build" depends="init.debug, base.compile, tag.build, junit.compile, developer-zip-archive" />
+ <target name="all.debug" description="Debug build" depends="init.debug, base.compile, tag.build, junit.compile, developer-zip-archive" >
+ <antcall target="clean-temp" inheritAll="true" inheritRefs="true" />
+ </target>
- <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" />
+ <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" >
+ <antcall target="clean-temp" inheritAll="true" inheritRefs="true" />
+ </target>
+
+ <target name="clean-temp" depends="init">
+ <delete includeEmptyDirs="true" failonerror="false">
+ <fileset dir="${project.root}/build-temp" />
+ <fileset dir="${project.root}" includes="make/GnuCTreeParserTokenTypes.txt make/STDCTokenTypes.txt" />
+ </delete>
+ </target>
- <target name="clean" depends="init">
- <delete includeEmptyDirs="true">
+ <target name="clean" depends="clean-temp">
+ <delete includeEmptyDirs="true" failonerror="false">
<fileset dir="${build}" />
</delete>
</target>
@@ -1009,6 +1269,9 @@
<echo message='gluegen.build.id=${gluegen.build.id}${line.separator}' file="${build}/artifact.properties" append="true"/>
<echo message='gluegen.build.branch=${gluegen.build.branch}${line.separator}' file="${build}/artifact.properties" append="true"/>
<echo message='gluegen.build.commit=${gluegen.build.commit}${line.separator}' file="${build}/artifact.properties" append="true"/>
+ <echo message='gluegen.build.sha.sources=${gluegen.build.sha.sources}${line.separator}' file="${build}/artifact.properties" append="true"/>
+ <echo message='gluegen.build.sha.classes=${gluegen.build.sha.classes}${line.separator}' file="${build}/artifact.properties" append="true"/>
+ <echo message='gluegen.build.sha.natives=${gluegen.build.sha.natives}${line.separator}' file="${build}/artifact.properties" append="true"/>
</target>
<target name="junit.compile" depends="init">
@@ -1024,15 +1287,19 @@
<delete dir="${javadoc.gluegen.path}" includeEmptyDirs="true" quiet="true" failonerror="false" />
<mkdir dir="${javadoc.gluegen.path}" />
<javadoc packagenames="com.jogamp.*"
- sourcepath="${src.java};${src.generated.java}"
+ sourcepath="${src.java};${src.jcpp};${src.generated.java}"
destdir="${javadoc.gluegen.path}" windowtitle="GlueGen Runtime Documentation"
overview="../src/java/com/jogamp/gluegen/package.html"
encoding="UTF-8"
source="${target.sourcelevel}"
maxmemory="${javac.memorymax}"
stylesheetfile="doc/javadoc/stylesheet.css">
- <classpath path="${classes}"/>
+ <classpath refid="javadoc_gluegen.classpath" />
<link offline="true" href="${javadoc.link}" packagelistLoc="142-packages" />
+ <arg value="--frames"/>
+ <arg value="${javadoc.xarg1}"/>
+ <arg value="-html5"/>
+ <arg value="--show-packages=all"/>
</javadoc>
<copy todir="${javadoc.gluegen.path}/resources" overwrite="true">
<fileset dir="doc/javadoc/resources" includes="*" />
@@ -1055,18 +1322,22 @@
<zip destfile="${build}/gluegen-java-src.zip" level="0">
<fileset dir="${src.java}"/>
<fileset dir="${build}/gensrc/java"/>
+ <fileset dir="${src.jcpp}"/>
</zip>
</target>
<target name="developer-zip-archive" depends="init,developer-src-zip" if="build.archiveon">
<delete includeEmptyDirs="true" quiet="true" dir="${archive}" failonerror="false" />
<mkdir dir="${archive}" />
- <copy file="${build}/artifact.properties" todir="${archive}"/>
- <copy file="../LICENSE.txt" todir="${archive}" />
+ <copy todir="${archive}">
+ <fileset dir=".." includes="LICENSE.txt"/>
+ <fileset dir="${build}" includes="artifact.properties"/>
+ </copy>
<mkdir dir="${archive}/jar" />
<copy todir="${archive}/jar">
<fileset dir="${build}" includes="gluegen*.jar"/>
<fileset dir="${build}" includes="*.apk"/>
+ <fileset dir="${build}" includes="gluegen-java-src.zip"/>
</copy>
<mkdir dir="${archive}/lib" />
<copy todir="${archive}/lib">
@@ -1076,7 +1347,13 @@
<copy todir="${archive}/jnlp-files">
<fileset dir="${project.root}/jnlp-files" includes="*" />
</copy>
- <copy todir="${archive}" file="${build}/gluegen-java-src.zip"/>
+ <mkdir dir="${archive}/dist" />
+ <copy todir="${archive}/dist">
+ <fileset dir="${build}" includes="jogamp-fat.mf"/>
+ <fileset dir="${build}" includes="jogamp-fat-test.mf"/>
+ <fileset dir="lib" includes="junit.jar"/>
+ </copy>
+
<archive.7z destfile="${build}/${archive.name}.7z"
basedir="${build}"
includes="${archive.name}/**" />
diff --git a/make/doc/javadoc/resources/glass.png b/make/doc/javadoc/resources/glass.png
new file mode 100644
index 0000000..a7f591f
--- /dev/null
+++ b/make/doc/javadoc/resources/glass.png
Binary files differ
diff --git a/make/doc/javadoc/resources/x.png b/make/doc/javadoc/resources/x.png
new file mode 100644
index 0000000..30548a7
--- /dev/null
+++ b/make/doc/javadoc/resources/x.png
Binary files differ
diff --git a/make/doc/javadoc/stylesheet.css b/make/doc/javadoc/stylesheet.css
index 9f63956..68ed57d 100644
--- a/make/doc/javadoc/stylesheet.css
+++ b/make/doc/javadoc/stylesheet.css
@@ -1,76 +1,116 @@
-/* Javadoc style sheet */
+/*
+ * Javadoc style sheet
+ */
/* Enhanced for JogAmp */
/*
Overall document style
background-color:#c9e2ff;
#menu a, #footer a, #footer {color: #3b4d4f}
*/
+
+@import url('resources/fonts/dejavu.css');
+
+/*
+ * Styles for individual HTML elements.
+ *
+ * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular
+ * HTML element throughout the page.
+ */
+
body {
background-color:#f5f5f5;
color:#111111;
- font-family:Arial, Helvetica, sans-serif;
- font-size:76%;
+ font-family:'DejaVu Sans', Arial, Helvetica, sans-serif;
+ font-size:13px;
+ line-height:1.4;
margin:0;
+ padding:0;
+ height:100%;
+ width:100%;
+}
+iframe {
+ margin:0;
+ padding:0;
+ height:100%;
+ width:100%;
+ overflow-y:scroll;
+ border:none;
}
a:link, a:visited {
text-decoration:none;
- color:#4444aa;
+ color:#4A6782;
}
-a:hover, a:focus {
+a[href]:hover, a[href]:focus {
text-decoration:none;
color:#bb7a2a;
}
-a:active {
- text-decoration:none;
- color:#4444cc;
-}
a[name] {
- color:#4444cc;
+ color:#353833;
}
-a[name]:hover {
- text-decoration:none;
- color:#4444cc;
+a[name]:before, a[name]:target, a[id]:before, a[id]:target {
+ content:"";
+ display:inline-block;
+ position:relative;
+ padding-top:129px;
+ margin-top:-129px;
}
pre {
- font-size:1.3em;
+ font-family:'DejaVu Sans Mono', monospace;
+ font-size:13px;
}
h1 {
- font-size:1.8em;
+ font-size:20px;
}
h2 {
- font-size:1.5em;
+ font-size:18px;
}
h3 {
- font-size:1.4em;
+ font-size:16px;
+ font-style:italic;
}
h4 {
- font-size:1.3em;
+ font-size:13px;
}
h5 {
- font-size:1.2em;
+ font-size:12px;
}
h6 {
- font-size:1.1em;
+ font-size:11px;
}
ul {
list-style-type:disc;
}
code, tt {
- font-size:1.2em;
+ font-family:'DejaVu Sans Mono', monospace;
+ font-size:13px;
+ padding-top:4px;
+ margin-top:8px;
+ line-height:1.4em;
}
dt code {
- font-size:1.2em;
+ font-family:'DejaVu Sans Mono', monospace;
+ font-size:13px;
+ padding-top:4px;
}
table tr td dt code {
- font-size:1.2em;
+ font-family:'DejaVu Sans Mono', monospace;
+ font-size:13px;
vertical-align:top;
+ padding-top:4px;
}
sup {
- font-size:.6em;
+ font-size:8px;
}
+
/*
-Document title and Copyright styles
-*/
+ * Styles for HTML generated by javadoc.
+ *
+ * These are style classes that are used by the standard doclet to generate HTML documentation.
+ */
+
+/*
+ * Styles for document title and copyright.
+ */
.clear {
clear:both;
height:0px;
@@ -79,9 +119,9 @@ Document title and Copyright styles
.aboutLanguage {
float:right;
padding:0px 21px;
- font-size:.8em;
+ font-size:11px;
z-index:200;
- margin-top:-7px;
+ margin-top:-9px;
}
.legalCopy {
margin-left:.5em;
@@ -95,28 +135,34 @@ Document title and Copyright styles
}
.tab {
background-color:#0066FF;
- background-image:url(resources/titlebar.gif);
- background-position:left top;
- background-repeat:no-repeat;
- color:#f5f5f5;
+ color:#ffffff;
padding:8px;
width:5em;
font-weight:bold;
}
/*
-Navigation bar styles
-*/
+ * Styles for navigation bar.
+ */
.bar {
background-color:#c9e2ff;
- color:#3b4d4f;
+ color:#FFFFFF;
padding:.8em .5em .4em .8em;
height:auto;/*height:1.8em;*/
- font-size:1em;
+ font-size:11px;
margin:0;
}
+.navPadding {
+ padding-top: 107px;
+}
+.fixedNav {
+ position:fixed;
+ width:100%;
+ z-index:999;
+ background-color:#ffffff;
+}
.topNav {
background-color:#c9e2ff;
- color:#3b4d4f;
+ color:#FFFFFF;
float:left;
padding:0;
width:100%;
@@ -124,11 +170,12 @@ Navigation bar styles
height:2.8em;
padding-top:10px;
overflow:hidden;
+ font-size:12px;
}
.bottomNav {
margin-top:10px;
background-color:#c9e2ff;
- color:#3b4d4f;
+ color:#FFFFFF;
float:left;
padding:0;
width:100%;
@@ -136,18 +183,20 @@ Navigation bar styles
height:2.8em;
padding-top:10px;
overflow:hidden;
+ font-size:12px;
}
.subNav {
- background-color:#eeeeee;
- border-bottom:1px solid #9eadc0;
+ background-color:#dee3e9;
float:left;
width:100%;
overflow:hidden;
+ font-size:12px;
}
.subNav div {
clear:left;
float:left;
padding:0 0 5px 6px;
+ text-transform:uppercase;
}
ul.navList, ul.subNavList {
float:left;
@@ -157,42 +206,74 @@ ul.navList, ul.subNavList {
ul.navList li{
list-style:none;
float:left;
- padding:3px 6px;
+ padding: 5px 6px;
+ text-transform:uppercase;
}
-ul.subNavList li{
+ul.navListSearch {
+ float:right;
+ margin:0 0 0 0;
+ padding:0;
+}
+ul.navListSearch li {
+ list-style:none;
+ float:right;
+ padding: 5px 6px;
+ text-transform:uppercase;
+}
+ul.navListSearch li label {
+ position:relative;
+ right:-16px;
+}
+ul.subNavList li {
list-style:none;
float:left;
- font-size:90%;
}
.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited {
- color:#3b4d4f;
+ color:#FFFFFF;
text-decoration:none;
+ text-transform:uppercase;
}
.topNav a:hover, .bottomNav a:hover {
text-decoration:none;
- color:#000000;
+ color:#bb7a2a;
+ text-transform:uppercase;
}
.navBarCell1Rev {
- background-image:url(resources/tab.gif);
- background-color:#a88834;
- color:#FFFFFF;
+ background-color:#F8981D;
+ color:#253441;
margin: auto 5px;
- border:1px solid #c9aa44;
+}
+.skipNav {
+ position:absolute;
+ top:auto;
+ left:-9999px;
+ overflow:hidden;
}
/*
-Page header and footer styles
-*/
+ * Styles for page header and footer.
+ */
.header, .footer {
clear:both;
margin:0 20px;
padding:5px 0 0 0;
}
-.indexHeader {
- margin:10px;
+.indexNav {
position:relative;
+ font-size:12px;
+ background-color:#dee3e9;
+}
+.indexNav ul {
+ margin-top:0;
+ padding:5px;
+}
+.indexNav ul li {
+ display:inline;
+ list-style-type:none;
+ padding-right:10px;
+ text-transform:uppercase;
}
-.indexHeader h1 {
- font-size:1.3em;
+.indexNav h1 {
+ font-size:13px;
}
.title {
color:#2c4557;
@@ -202,34 +283,30 @@ Page header and footer styles
margin:5px 0 0 0;
}
.header ul {
- margin:0 0 25px 0;
+ margin:0 0 15px 0;
padding:0;
}
.footer ul {
- /* margin:20px 0 5px 0; */
- margin:5px 0 5px 0;
+ margin:20px 0 5px 0;
}
.header ul li, .footer ul li {
- list-style-type:disc;
- padding:5px 0px;
- font-size:90%
+ list-style:none;
+ font-size:13px;
}
/*
-Heading styles
-*/
+ * Styles for headings.
+ */
div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 {
background-color:#dee3e9;
- border-top:1px solid #9eadc0;
- border-bottom:1px solid #9eadc0;
+ border:1px solid #d0d9e0;
margin:0 0 6px -8px;
- padding:2px 5px;
+ padding:7px 5px;
}
ul.blockList ul.blockList ul.blockList li.blockList h3 {
background-color:#dee3e9;
- border-top:1px solid #9eadc0;
- border-bottom:1px solid #9eadc0;
+ border:1px solid #d0d9e0;
margin:0 0 6px -8px;
- padding:2px 5px;
+ padding:7px 5px;
}
ul.blockList ul.blockList li.blockList h3 {
padding:0;
@@ -239,9 +316,10 @@ ul.blockList li.blockList h2 {
padding:0px 0 20px 0;
}
/*
-Page layout container styles
-*/
-.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer {
+ * Styles for page layout containers.
+ */
+.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer,
+.allClassesContainer, .allPackagesContainer {
clear:both;
padding:10px 20px;
position:relative;
@@ -249,10 +327,10 @@ Page layout container styles
.indexContainer {
margin:10px;
position:relative;
- font-size:1.0em;
+ font-size:12px;
}
.indexContainer h2 {
- font-size:1.1em;
+ font-size:13px;
padding:0 0 3px 0;
}
.indexContainer ul {
@@ -261,15 +339,18 @@ Page layout container styles
}
.indexContainer ul li {
list-style:none;
+ padding-top:2px;
}
.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt {
- font-size:1.1em;
+ font-size:12px;
font-weight:bold;
margin:10px 0 0 0;
color:#4E4E4E;
}
.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd {
- margin:10px 0 10px 20px;
+ margin:5px 0 10px 0px;
+ font-size:13px;
+ /* font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; */
}
.serializedFormContainer dl.nameValue dt {
margin-left:1px;
@@ -283,8 +364,11 @@ Page layout container styles
display:inline;
}
/*
-List styles
-*/
+ * Styles for lists.
+ */
+li.circle {
+ list-style:circle;
+}
ul.horizontal li {
display:inline;
font-size:0.9em;
@@ -308,25 +392,24 @@ ul.blockList, ul.blockListLast {
}
ul.blockList li.blockList, ul.blockListLast li.blockList {
list-style:none;
- margin-bottom:25px;
+ margin-bottom:15px;
+ line-height:1.4;
}
ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList {
padding:0px 20px 5px 10px;
- border:1px solid #9eadc0;
- background-color:#f9f9f9;
+ border:1px solid #ededed;
+ background-color:#f8f8f8;
}
ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList {
padding:0 0 5px 8px;
- background-color:#f5f5f5;
- border:1px solid #9eadc0;
- border-top:none;
+ background-color:#ffffff;
+ border:none;
}
ul.blockList ul.blockList ul.blockList ul.blockList li.blockList {
margin-left:0;
padding-left:0;
padding-bottom:15px;
border:none;
- border-bottom:1px solid #9eadc0;
}
ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast {
list-style:none;
@@ -338,113 +421,207 @@ table tr td dl, table tr td dl dt, table tr td dl dd {
margin-bottom:1px;
}
/*
-Table styles
-*/
-.contentContainer table, .classUseContainer table, .constantValuesContainer table {
- border-bottom:1px solid #9eadc0;
- width:100%;
-}
-.contentContainer ul li table, .classUseContainer ul li table, .constantValuesContainer ul li table {
+ * Styles for tables.
+ */
+.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary,
+.requiresSummary, .packagesSummary, .providesSummary, .usesSummary {
width:100%;
+ border-spacing:0;
+ border-left:1px solid #EEE;
+ border-right:1px solid #EEE;
+ border-bottom:1px solid #EEE;
}
-.contentContainer .description table, .contentContainer .details table {
- border-bottom:none;
-}
-.contentContainer ul li table th.colOne, .contentContainer ul li table th.colFirst, .contentContainer ul li table th.colLast, .classUseContainer ul li table th, .constantValuesContainer ul li table th, .contentContainer ul li table td.colOne, .contentContainer ul li table td.colFirst, .contentContainer ul li table td.colLast, .classUseContainer ul li table td, .constantValuesContainer ul li table td{
- vertical-align:top;
- padding-right:20px;
-}
-.contentContainer ul li table th.colLast, .classUseContainer ul li table th.colLast,.constantValuesContainer ul li table th.colLast,
-.contentContainer ul li table td.colLast, .classUseContainer ul li table td.colLast,.constantValuesContainer ul li table td.colLast,
-.contentContainer ul li table th.colOne, .classUseContainer ul li table th.colOne,
-.contentContainer ul li table td.colOne, .classUseContainer ul li table td.colOne {
- padding-right:3px;
+.overviewSummary, .memberSummary, .requiresSummary, .packagesSummary, .providesSummary, .usesSummary {
+ padding:0px;
}
-.overviewSummary caption, .packageSummary caption, .contentContainer ul.blockList li.blockList caption, .summary caption, .classUseContainer caption, .constantValuesContainer caption {
+.overviewSummary caption, .memberSummary caption, .typeSummary caption,
+.useSummary caption, .constantsSummary caption, .deprecatedSummary caption,
+.requiresSummary caption, .packagesSummary caption, .providesSummary caption, .usesSummary caption {
position:relative;
text-align:left;
background-repeat:no-repeat;
- color:#FFFFFF;
+ color:#253441;
font-weight:bold;
clear:none;
overflow:hidden;
padding:0px;
+ padding-top:10px;
+ padding-left:1px;
margin:0px;
-}
-caption a:link, caption a:hover, caption a:active, caption a:visited {
+ white-space:pre;
+}
+.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link,
+.constantsSummary caption a:link, .deprecatedSummary caption a:link,
+.requiresSummary caption a:link, .packagesSummary caption a:link, .providesSummary caption a:link,
+.usesSummary caption a:link,
+.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover,
+.constantsSummary caption a:hover, .deprecatedSummary caption a:hover,
+.requiresSummary caption a:hover, .packagesSummary caption a:hover, .providesSummary caption a:hover,
+.usesSummary caption a:hover,
+.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active,
+.constantsSummary caption a:active, .deprecatedSummary caption a:active,
+.requiresSummary caption a:active, .packagesSummary caption a:active, .providesSummary caption a:active,
+.usesSummary caption a:active,
+.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited,
+.constantsSummary caption a:visited, .deprecatedSummary caption a:visited,
+.requiresSummary caption a:visited, .packagesSummary caption a:visited, .providesSummary caption a:visited,
+.usesSummary caption a:visited {
color:#FFFFFF;
}
-.overviewSummary caption span, .packageSummary caption span, .contentContainer ul.blockList li.blockList caption span, .summary caption span, .classUseContainer caption span, .constantValuesContainer caption span {
+.useSummary caption a:link, .useSummary caption a:hover, .useSummary caption a:active,
+.useSummary caption a:visited {
+ color:#1f389c;
+}
+.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span,
+.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span,
+.requiresSummary caption span, .packagesSummary caption span, .providesSummary caption span,
+.usesSummary caption span {
white-space:nowrap;
- padding-top:8px;
- padding-left:8px;
- display:block;
+ padding-top:5px;
+ padding-left:12px;
+ padding-right:12px;
+ padding-bottom:7px;
+ display:inline-block;
float:left;
- background-image:url(resources/titlebar.gif);
- height:18px;
+ background-color:#F8981D;
+ border: none;
+ height:16px;
}
-.overviewSummary .tabEnd, .packageSummary .tabEnd, .contentContainer ul.blockList li.blockList .tabEnd, .summary .tabEnd, .classUseContainer .tabEnd, .constantValuesContainer .tabEnd {
- width:10px;
- background-image:url(resources/titlebar_end.gif);
- background-repeat:no-repeat;
- background-position:top right;
- position:relative;
+.memberSummary caption span.activeTableTab span, .packagesSummary caption span.activeTableTab span,
+.overviewSummary caption span.activeTableTab span, .typeSummary caption span.activeTableTab span {
+ white-space:nowrap;
+ padding-top:5px;
+ padding-left:12px;
+ padding-right:12px;
+ margin-right:3px;
+ display:inline-block;
float:left;
+ background-color:#F8981D;
+ height:16px;
}
-ul.blockList ul.blockList li.blockList table {
- margin:0 0 12px 0px;
- width:100%;
+.memberSummary caption span.tableTab span, .packagesSummary caption span.tableTab span,
+.overviewSummary caption span.tableTab span, .typeSummary caption span.tableTab span {
+ white-space:nowrap;
+ padding-top:5px;
+ padding-left:12px;
+ padding-right:12px;
+ margin-right:3px;
+ display:inline-block;
+ float:left;
+ background-color:#c9e2ff;
+ height:16px;
+}
+.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab,
+.packagesSummary caption span.tableTab, .packagesSummary caption span.activeTableTab,
+.overviewSummary caption span.tableTab, .overviewSummary caption span.activeTableTab,
+.typeSummary caption span.tableTab, .typeSummary caption span.activeTableTab {
+ padding-top:0px;
+ padding-left:0px;
+ padding-right:0px;
+ background-image:none;
+ float:none;
+ display:inline;
}
-.tableSubHeadingColor {
- background-color: #EEEEFF;
+.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd,
+.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd,
+.requiresSummary .tabEnd, .packagesSummary .tabEnd, .providesSummary .tabEnd, .usesSummary .tabEnd {
+ display:none;
+ width:5px;
+ position:relative;
+ float:left;
+ background-color:#F8981D;
+}
+.memberSummary .activeTableTab .tabEnd, .packagesSummary .activeTableTab .tabEnd,
+.overviewSummary .activeTableTab .tabEnd, .typeSummary .activeTableTab .tabEnd {
+ display:none;
+ width:5px;
+ margin-right:3px;
+ position:relative;
+ float:left;
+ background-color:#F8981D;
}
-.altColor {
- background-color:#eeeeef;
+.memberSummary .tableTab .tabEnd, .packagesSummary .tableTab .tabEnd,
+.overviewSummary .tableTab .tabEnd, .typeSummary .tableTab .tabEnd {
+ display:none;
+ width:5px;
+ margin-right:3px;
+ position:relative;
+ background-color:#c9e2ff;
+ float:left;
}
-.rowColor {
- background-color:#f5f5f5;
+.rowColor th, .altColor th {
+ font-weight:normal;
}
-.overviewSummary td, .packageSummary td, .contentContainer ul.blockList li.blockList td, .summary td, .classUseContainer td, .constantValuesContainer td {
+.overviewSummary td, .memberSummary td, .typeSummary td,
+.useSummary td, .constantsSummary td, .deprecatedSummary td,
+.requiresSummary td, .packagesSummary td, .providesSummary td, .usesSummary td {
text-align:left;
- padding:3px 3px 3px 7px;
+ padding:0px 0px 12px 10px;
}
-th.colFirst, th.colLast, th.colOne, .constantValuesContainer th {
+th.colFirst, th.colSecond, th.colLast, th.colConstructorName, th.colDeprecatedItemName, .useSummary th,
+.constantsSummary th, .packagesSummary th, td.colFirst, td.colSecond, td.colLast, .useSummary td,
+.constantsSummary td {
+ vertical-align:top;
+ padding-right:0px;
+ padding-top:8px;
+ padding-bottom:3px;
+}
+th.colFirst, th.colSecond, th.colLast, th.colConstructorName, th.colDeprecatedItemName, .constantsSummary th,
+.packagesSummary th {
background:#dee3e9;
- border-top:1px solid #9eadc0;
- border-bottom:1px solid #9eadc0;
text-align:left;
- padding:3px 3px 3px 7px;
-}
-td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover {
- font-weight:bold;
+ padding:8px 3px 3px 7px;
}
td.colFirst, th.colFirst {
- border-left:1px solid #9eadc0;
- white-space:nowrap;
-}
-td.colLast, th.colLast {
- border-right:1px solid #9eadc0;
+ font-size:13px;
+}
+td.colSecond, th.colSecond, td.colLast, th.colConstructorName, th.colDeprecatedItemName, th.colLast {
+ font-size:13px;
+}
+.constantsSummary th, .packagesSummary th {
+ font-size:13px;
+}
+.providesSummary th.colFirst, .providesSummary th.colLast, .providesSummary td.colFirst,
+.providesSummary td.colLast {
+ white-space:normal;
+ font-size:13px;
+}
+.overviewSummary td.colFirst, .overviewSummary th.colFirst,
+.requiresSummary td.colFirst, .requiresSummary th.colFirst,
+.packagesSummary td.colFirst, .packagesSummary td.colSecond, .packagesSummary th.colFirst, .packagesSummary th,
+.usesSummary td.colFirst, .usesSummary th.colFirst,
+.providesSummary td.colFirst, .providesSummary th.colFirst,
+.memberSummary td.colFirst, .memberSummary th.colFirst,
+.memberSummary td.colSecond, .memberSummary th.colSecond, .memberSummary th.colConstructorName,
+.typeSummary td.colFirst, .typeSummary th.colFirst {
+ vertical-align:top;
}
-td.colOne, th.colOne {
- border-right:1px solid #9eadc0;
- border-left:1px solid #9eadc0;
+.packagesSummary th.colLast, .packagesSummary td.colLast {
+ white-space:normal;
+}
+td.colFirst a:link, td.colFirst a:visited,
+td.colSecond a:link, td.colSecond a:visited,
+th.colFirst a:link, th.colFirst a:visited,
+th.colSecond a:link, th.colSecond a:visited,
+th.colConstructorName a:link, th.colConstructorName a:visited,
+th.colDeprecatedItemName a:link, th.colDeprecatedItemName a:visited,
+.constantValuesContainer td a:link, .constantValuesContainer td a:visited,
+.allClassesContainer td a:link, .allClassesContainer td a:visited,
+.allPackagesContainer td a:link, .allPackagesContainer td a:visited {
+ font-weight:bold;
}
-table.overviewSummary {
- padding:0px;
- margin-left:0px;
+.tableSubHeadingColor {
+ background-color:#EEEEFF;
}
-table.overviewSummary td.colFirst, table.overviewSummary th.colFirst,
-table.overviewSummary td.colOne, table.overviewSummary th.colOne {
- width:25%;
- vertical-align:middle;
+.altColor, .altColor th {
+ background-color:#FFFFFF;
}
-table.packageSummary td.colFirst, table.overviewSummary th.colFirst {
- width:25%;
- vertical-align:middle;
+.rowColor, .rowColor th {
+ background-color:#EEEEEF;
}
/*
-Content styles
-*/
+ * Styles for contents.
+ */
.description pre {
margin-top:0;
}
@@ -455,9 +632,22 @@ Content styles
.docSummary {
padding:0;
}
+ul.blockList ul.blockList ul.blockList li.blockList h3 {
+ font-style:normal;
+}
+div.block {
+ font-size:13px;
+ /* font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; */
+}
+td.colLast div {
+ padding-top:0px;
+}
+td.colLast a {
+ padding-bottom:3px;
+}
/*
-Formatting effect styles
-*/
+ * Styles for formatting effect.
+ */
.sourceLineNo {
color:green;
padding:0 30px 0 0;
@@ -465,13 +655,259 @@ Formatting effect styles
h1.hidden {
visibility:hidden;
overflow:hidden;
- font-size:.9em;
+ font-size:10px;
}
.block {
display:block;
- margin:3px 0 0 0;
+ margin:3px 10px 2px 0px;
+ color:#474747;
+}
+.deprecatedLabel, .descfrmTypeLabel, .implementationLabel, .memberNameLabel, .memberNameLink,
+.moduleLabelInPackage, .moduleLabelInType, .overrideSpecifyLabel, .packageLabelInType,
+.packageHierarchyLabel, .paramLabel, .returnLabel, .seeLabel, .simpleTagLabel,
+.throwsLabel, .typeNameLabel, .typeNameLink, .searchTagLink {
+ font-weight:bold;
+}
+.deprecationComment, .emphasizedPhrase, .interfaceName {
+ font-style:italic;
+}
+.deprecationBlock {
+ font-size:13px;
+ /* font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; */
+ border-style:solid;
+ border-width:thin;
+ border-radius:10px;
+ padding:10px;
+ margin-bottom:10px;
+ margin-right:10px;
+ display:inline-block;
+}
+div.block div.deprecationComment, div.block div.block span.emphasizedPhrase,
+div.block div.block span.interfaceName {
+ font-style:normal;
+}
+div.contentContainer ul.blockList li.blockList h2 {
+ padding-bottom:0px;
+}
+/*
+ * Styles for IFRAME.
+ */
+.mainContainer {
+ margin:0 auto;
+ padding:0;
+ height:100%;
+ width:100%;
+ position:fixed;
+ top:0;
+ left:0;
+}
+.leftContainer {
+ height:100%;
+ position:fixed;
+ width:320px;
+}
+.leftTop {
+ position:relative;
+ float:left;
+ width:315px;
+ top:0;
+ left:0;
+ height:30%;
+ border-right:6px solid #ccc;
+ border-bottom:6px solid #ccc;
+}
+.leftBottom {
+ position:relative;
+ float:left;
+ width:315px;
+ bottom:0;
+ left:0;
+ height:70%;
+ border-right:6px solid #ccc;
+ border-top:1px solid #000;
+}
+.rightContainer {
+ position:absolute;
+ left:320px;
+ top:0;
+ bottom:0;
+ height:100%;
+ right:0;
+ border-left:1px solid #000;
+}
+.rightIframe {
+ margin:0;
+ padding:0;
+ height:100%;
+ right:30px;
+ width:100%;
+ overflow:visible;
+ margin-bottom:30px;
+}
+/*
+ * Styles specific to HTML5 elements.
+ */
+main, nav, header, footer, section {
+ display:block;
+}
+/*
+ * Styles for javadoc search.
+ */
+.ui-autocomplete-category {
+ font-weight:bold;
+ font-size:15px;
+ padding:7px 0 7px 3px;
+ background-color:#c9e2ff;
+ color:#FFFFFF;
+}
+.resultItem {
+ font-size:13px;
+}
+.ui-autocomplete {
+ max-height:85%;
+ max-width:65%;
+ overflow-y:scroll;
+ overflow-x:scroll;
+ white-space:nowrap;
+ box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23);
+}
+ul.ui-autocomplete {
+ position:fixed;
+ z-index:999999;
+}
+ul.ui-autocomplete li {
+ float:left;
+ clear:both;
+ width:100%;
}
-.strong {
+.resultHighlight {
font-weight:bold;
}
+#search {
+ background-image:url('resources/glass.png');
+ background-size:13px;
+ background-repeat:no-repeat;
+ background-position:2px 3px;
+ padding-left:20px;
+ position:relative;
+ right:-18px;
+}
+#reset {
+ background-color: rgb(255,255,255);
+ background-image:url('resources/x.png');
+ background-position:center;
+ background-repeat:no-repeat;
+ background-size:12px;
+ border:0 none;
+ width:16px;
+ height:17px;
+ position:relative;
+ left:-4px;
+ top:-4px;
+ font-size:0px;
+}
+.watermark {
+ color:#545454;
+}
+.searchTagDescResult {
+ font-style:italic;
+ font-size:11px;
+}
+.searchTagHolderResult {
+ font-style:italic;
+ font-size:12px;
+}
+.searchTagResult:before, .searchTagResult:target {
+ color:red;
+}
+.moduleGraph span {
+ display:none;
+ position:absolute;
+}
+.moduleGraph:hover span {
+ display:block;
+ margin: -100px 0 0 100px;
+ z-index: 1;
+}
+.methodSignature {
+ white-space:normal;
+}
+
+/*
+ * Styles for user-provided tables.
+ *
+ * borderless:
+ * No borders, vertical margins, styled caption.
+ * This style is provided for use with existing doc comments.
+ * In general, borderless tables should not be used for layout purposes.
+ *
+ * plain:
+ * Plain borders around table and cells, vertical margins, styled caption.
+ * Best for small tables or for complex tables for tables with cells that span
+ * rows and columns, when the "striped" style does not work well.
+ *
+ * striped:
+ * Borders around the table and vertical borders between cells, striped rows,
+ * vertical margins, styled caption.
+ * Best for tables that have a header row, and a body containing a series of simple rows.
+ */
+table.borderless,
+table.plain,
+table.striped {
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+table.borderless > caption,
+table.plain > caption,
+table.striped > caption {
+ font-weight: bold;
+ font-size: smaller;
+}
+table.borderless th, table.borderless td,
+table.plain th, table.plain td,
+table.striped th, table.striped td {
+ padding: 2px 5px;
+}
+table.borderless,
+table.borderless > thead > tr > th, table.borderless > tbody > tr > th, table.borderless > tr > th,
+table.borderless > thead > tr > td, table.borderless > tbody > tr > td, table.borderless > tr > td {
+ border: none;
+}
+table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > tr {
+ background-color: transparent;
+}
+table.plain {
+ border-collapse: collapse;
+ border: 1px solid black;
+}
+table.plain > thead > tr, table.plain > tbody tr, table.plain > tr {
+ background-color: transparent;
+}
+table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th,
+table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td {
+ border: 1px solid black;
+}
+table.striped {
+ border-collapse: collapse;
+ border: 1px solid black;
+}
+table.striped > thead {
+ background-color: #E3E3E3;
+}
+table.striped > thead > tr > th, table.striped > thead > tr > td {
+ border: 1px solid black;
+}
+table.striped > tbody > tr:nth-child(even) {
+ background-color: #EEE
+}
+table.striped > tbody > tr:nth-child(odd) {
+ background-color: #FFF
+}
+table.striped > tbody > tr > th, table.striped > tbody > tr > td {
+ border-left: 1px solid black;
+ border-right: 1px solid black;
+}
+table.striped > tbody > tr > th {
+ font-weight: normal;
+}
diff --git a/make/elf-header.cfg b/make/elf-header.cfg
index 05c7d79..c9c8be4 100644
--- a/make/elf-header.cfg
+++ b/make/elf-header.cfg
@@ -6,7 +6,61 @@ HierarchicalNativeOutput false
#Implements Sym32 Sym
#Implements Sym64 Sym
-EmitStruct Ehdr
+# ELF-1 (part-1) is independent of CPUType/ABI
+# hence can use an arbitrary MachineDataInfo index
+# for reading the struct Ehdr_p1 !
+StructMachineDataInfoIndex Ehdr_p1 private static final int mdIdx = 0;
+
+# The following sub structures shall use an mdIdx
+# defined by ELF-1 header code, set w/ ctor!
+StructMachineDataInfoIndex Ehdr_p2 private final int mdIdx;
+StructMachineDataInfoIndex Shdr private final int mdIdx;
+
+ManuallyImplement Ehdr_p2.size
+ManuallyImplement Ehdr_p2.create
+ManuallyImplement Ehdr_p2.Ehdr_p2
+ManuallyImplement Shdr.size
+ManuallyImplement Shdr.create
+ManuallyImplement Shdr.Shdr
+
+CustomJavaCode Ehdr_p2 public static int size(final int mdIdx) {
+CustomJavaCode Ehdr_p2 return Ehdr_p2_size[mdIdx];
+CustomJavaCode Ehdr_p2 }
+CustomJavaCode Ehdr_p2
+CustomJavaCode Ehdr_p2 public static Ehdr_p2 create(final int mdIdx) {
+CustomJavaCode Ehdr_p2 return create(mdIdx, Buffers.newDirectByteBuffer(size(mdIdx)));
+CustomJavaCode Ehdr_p2 }
+CustomJavaCode Ehdr_p2
+CustomJavaCode Ehdr_p2 public static Ehdr_p2 create(final int mdIdx, final java.nio.ByteBuffer buf) {
+CustomJavaCode Ehdr_p2 return new Ehdr_p2(mdIdx, buf);
+CustomJavaCode Ehdr_p2 }
+CustomJavaCode Ehdr_p2
+CustomJavaCode Ehdr_p2 Ehdr_p2(final int mdIdx, final java.nio.ByteBuffer buf) {
+CustomJavaCode Ehdr_p2 this.mdIdx = mdIdx;
+CustomJavaCode Ehdr_p2 this.md = MachineDataInfo.StaticConfig.values()[mdIdx].md;
+CustomJavaCode Ehdr_p2 this.accessor = new StructAccessor(buf);
+CustomJavaCode Ehdr_p2 }
+
+CustomJavaCode Shdr public static int size(final int mdIdx) {
+CustomJavaCode Shdr return Shdr_size[mdIdx];
+CustomJavaCode Shdr }
+CustomJavaCode Shdr
+CustomJavaCode Shdr public static Shdr create(final int mdIdx) {
+CustomJavaCode Shdr return create(mdIdx, Buffers.newDirectByteBuffer(size(mdIdx)));
+CustomJavaCode Shdr }
+CustomJavaCode Shdr
+CustomJavaCode Shdr public static Shdr create(final int mdIdx, final java.nio.ByteBuffer buf) {
+CustomJavaCode Shdr return new Shdr(mdIdx, buf);
+CustomJavaCode Shdr }
+CustomJavaCode Shdr
+CustomJavaCode Shdr Shdr(final int mdIdx, final java.nio.ByteBuffer buf) {
+CustomJavaCode Shdr this.mdIdx = mdIdx;
+CustomJavaCode Shdr this.md = MachineDataInfo.StaticConfig.values()[mdIdx].md;
+CustomJavaCode Shdr this.accessor = new StructAccessor(buf);
+CustomJavaCode Shdr }
+
+EmitStruct Ehdr_p1
+EmitStruct Ehdr_p2
EmitStruct Shdr
#EmitStruct Sym32
#EmitStruct Sym64
diff --git a/make/gluegen-cpptasks-base.xml b/make/gluegen-cpptasks-base.xml
index 222cad7..746f9cc 100755
--- a/make/gluegen-cpptasks-base.xml
+++ b/make/gluegen-cpptasks-base.xml
@@ -21,7 +21,7 @@
- isI386
- isAMD64
- is64Bit
- - isAbiEabiGnuArmel (implicit if isAndroidARMv6 or isLinuxARMv6)
+ - isAbiEabiGnuArmel (implicit if isAndroidARMv6 or isAndroidARM64)
- isAbiEabiGnuArmhf (shall be declared explicit)
- isUnix
- isX11
@@ -32,13 +32,16 @@
- isIA64
- isAndroid
- isAndroidARMv6
+ - isAndroidARM64
- isAndroidARMv6Armel (set in gluegen.cpptasks.detected.os.2)
- isAndroidARMv6Armhf (set in gluegen.cpptasks.detected.os.2)
+ - isAndroidX86
- isLinux
- isLinuxAMD64
- isLinuxIA64
- isLinuxX86
- isLinuxARMv6
+ - isLinuxARM64
- isLinuxARMv6Armel (set in gluegen.cpptasks.detected.os.2)
- isLinuxARMv6Armhf (set in gluegen.cpptasks.detected.os.2)
- isLinuxAlpha
@@ -46,11 +49,17 @@
- isLinuxMips
- isLinuxMipsel
- isLinuxPpc
+ - isLinuxPpc64
+ - isLinuxPpc64le
+ - isLinuxRiscV64
- isLinuxs390
- isLinuxs390x
- isLinuxSparc
- isOSX
- isOSXPPC
+ - isIOS
+ - isIOSAmd64
+ - isIOSArm64
- isSolaris
- isSolaris32Bit
- isSolaris64Bit
@@ -65,15 +74,21 @@
- jvmDataModel32Bit
- jvmDataModel.arg either one of [ "-d64", "-d32" or "-Djnlp.no.jvm.data.model.set=true" ]
+
+ - build.dynamiclibs
+ - build.staticlibs (usually = !build.dynamiclibs)
+ - output.lib.type
+
-
- - isX11 is set if: !isWindows && !isOSX && !noX11
+ - isX11 is set if: !isWindows && !isOSX !isIOS && !noX11
-
- It also sets the following properties which are useful for
- building native library jar files for Java Web Start and
- understanding on what OS and architecture things are being built.
-
- os.and.arch (i.e., "windows-i586")
- - native.library.suffix (i.e.., "so", "dll")
+ - native.library.prefix (i.e.., "lib", "")
+ - native.library.suffix (i.e.., "so", "dll", "dylib")
-
- The gluegen.cpptasks.setup.compiler target is the preferred target
- to depend upon in your build.xml. It depends on gluegen.cpptasks.detect.compiler
@@ -86,9 +101,9 @@
- and the following properties:
-
- java.home.dir : path to the JDK home directory
- - java.includes.dir : path to the JNI headers (.../jdk/include)
- - java.includes.dir.platform : path to the platform JNI headers (.../jdk/include/linux)
- java.lib.dir.platform : path to the Java library dir (libjawt.so, etc.)
+ - java.includes.dir : path to the GlueGen JNI headers: gluegen/make/stub_includes/jni
+ - java.includes.dir.platform : path to the GlueGen Platform JNI headers: gluegen/make/stub_includes/jni/<platform>
-
- If your project requires only minimal changes to the compiler
- configuration, you may be able to simply refer to the
@@ -125,11 +140,15 @@
- compiler.cfg.linux.x86
- compiler.cfg.linux.amd64
- compiler.cfg.linux.armv6
+ - compiler.cfg.linux.aarch64
- compiler.cfg.linux.alpha
- compiler.cfg.linux.hppa
- compiler.cfg.linux.mips
- compiler.cfg.linux.mipsel
- compiler.cfg.linux.ppc
+ - compiler.cfg.linux.ppc64
+ - compiler.cfg.linux.ppc64le
+ - compiler.cfg.linux.riscv64
- compiler.cfg.linux.s390
- compiler.cfg.linux.s390x
- compiler.cfg.linux.sparc
@@ -140,17 +159,22 @@
- compiler.cfg.win32.mingw
- compiler.cfg.win32.msvc
- compiler.cfg.macosx
+ - compiler.cfg.ios.amd64
+ - compiler.cfg.ios.arm64
- compiler.cfg.freebsd
- compiler.cfg.hpux
- linker.cfg.linux
- linker.cfg.linux.x86
- linker.cfg.linux.amd64
- linker.cfg.linux.armv6
+ - linker.cfg.linux.aarch64
- linker.cfg.linux.alpha
- linker.cfg.linux.hppa
- linker.cfg.linux.mips
- linker.cfg.linux.mipsel
- linker.cfg.linux.ppc
+ - linker.cfg.linux.ppc64le
+ - linker.cfg.linux.riscv64
- linker.cfg.linux.s390
- linker.cfg.linux.s390x
- linker.cfg.linux.sparc
@@ -163,6 +187,8 @@
- linker.cfg.win32.mingw
- linker.cfg.win32.msvc
- linker.cfg.macosx
+ - linker.cfg.ios.amd64
+ - linker.cfg.ios.arm64
- linker.cfg.hpux
-
- This project file also defines a macrodef called "msvc.manifest"
@@ -172,6 +198,7 @@
-->
<project name="GlueGen-cpptasks-base" basedir=".">
+ <import file="gluegen-properties.xml" />
<target name="gluegen.cpptasks.initialize" depends="gluegen.properties.load.user">
<echo message="os.name=${os.name}" />
<echo message="os.version=${os.version}" />
@@ -194,28 +221,10 @@
<condition property="c.strip.libraries"><isfalse value="${c.compiler.debug}"/></condition>
<!-- NOTE: the values of the macos<arch> attributes will not be overridden if already set externally -->
- <property name="macosppc" value="false" />
- <property name="macosx64" value="true" />
- <!-- No 32bit binaries on OSX since Java7 -->
- <condition property="macosx32" value="false" else="true">
- <or>
- <contains string="${ant.java.version}" substring="1.7" casesensitive="false" />
- <contains string="${ant.java.version}" substring="1.8" casesensitive="false" />
- <contains string="${ant.java.version}" substring="1.9" casesensitive="false" />
- <contains string="${ant.java.version}" substring="2.0" casesensitive="false" />
- </or>
- </condition>
+ <property name="macosppc" value="false" /> <!-- permanently disabled -->
+ <property name="macosx32" value="false" /> <!-- permanently disabled -->
+ <property name="macosx64" value="true" /> <!-- for x86_64 and arm64 -->
- <!-- Need a way to be able to disable the macosx64 property specification in a build.xml -->
- <condition property="use.macosppc">
- <istrue value="${macosppc}" />
- </condition>
- <condition property="use.macosx32">
- <and>
- <istrue value="${macosx32}" />
- <os family="mac"/>
- </and>
- </condition>
<condition property="use.macosx64">
<and>
<istrue value="${macosx64}" />
@@ -228,7 +237,7 @@
by a custom file set in property 'gluegen-cpptasks.file'
or environment var 'GLUEGEN_CPPTASKS_FILE'
- See 'lib/gluegen-cpptasks-linux-armv6.xml' which sets OS and ARCH
+ See 'lib/gluegen-cpptasks-linux-armv6hf.xml' which sets OS and ARCH
for crosscompilation.
-->
<target name="gluegen.cpptasks.detect.os.custom">
@@ -253,15 +262,28 @@
<condition property="is64Bit">
<or>
<istrue value="${isAMD64}" />
+ <istrue value="${isIOSAmd64}"/>
+ <istrue value="${isIOSArm64}"/>
<os arch="IA64" />
<os arch="sparcv9" />
+ <os arch="armv8a" />
+ <os arch="aarch64" />
</or>
</condition>
+ <condition property="isIOS">
+ <or>
+ <istrue value="${isIOSAmd64}"/>
+ <istrue value="${isIOSArm64}"/>
+ </or>
+ </condition>
<condition property="isOSX">
<and>
<os family="mac"/>
<os family="unix"/>
+ <not>
+ <istrue value="${isIOS}"/>
+ </not>
</and>
</condition>
<condition property="isUnix">
@@ -324,6 +346,21 @@
</or>
</and>
</condition>
+ <condition property="isAndroidARM64">
+ <and>
+ <istrue value="${isAndroid}" />
+ <or>
+ <os arch="armv8a" />
+ <os arch="aarch64" />
+ </or>
+ </and>
+ </condition>
+ <condition property="isAndroidX86">
+ <and>
+ <istrue value="${isAndroid}" />
+ <os arch="x86" />
+ </and>
+ </condition>
<condition property="isLinuxARMv6">
<and>
<istrue value="${isLinux}" />
@@ -334,12 +371,23 @@
</or>
</and>
</condition>
+ <condition property="isLinuxARM64">
+ <and>
+ <istrue value="${isLinux}" />
+ <or>
+ <os arch="armv8a" />
+ <os arch="aarch64" />
+ </or>
+ </and>
+ </condition>
<condition property="isAbiEabiGnuArmel">
<and>
<isfalse value="${isAbiEabiGnuArmhf}" />
<or>
<istrue value="${isAndroidARMv6}" />
+ <istrue value="${isAndroidARM64}" />
<istrue value="${isLinuxARMv6}" />
+ <istrue value="${isLinuxARM64}" />
</or>
</and>
</condition>
@@ -391,6 +439,33 @@
<condition property="ppc">
<os arch="ppc" />
</condition>
+ <condition property="isLinuxPpc64">
+ <and>
+ <istrue value="${isLinux}" />
+ <os arch="ppc64" />
+ </and>
+ </condition>
+ <condition property="ppc64">
+ <os arch="ppc64" />
+ </condition>
+ <condition property="isLinuxPpc64le">
+ <and>
+ <istrue value="${isLinux}" />
+ <os arch="ppc64le" />
+ </and>
+ </condition>
+ <condition property="ppc64le">
+ <os arch="ppc64le" />
+ </condition>
+ <condition property="isLinuxRiscV64">
+ <and>
+ <istrue value="${isLinux}" />
+ <os arch="riscv64" />
+ </and>
+ </condition>
+ <condition property="riscv64">
+ <os arch="riscv64" />
+ </condition>
<condition property="isLinuxs390">
<and>
<istrue value="${isLinux}" />
@@ -484,6 +559,7 @@
<and>
<isfalse value="${isWindows}" />
<isfalse value="${isOSX}" />
+ <isfalse value="${isIOS}" />
<isfalse value="${isAndroid}" />
<isfalse value="${noX11}" />
</and>
@@ -543,58 +619,10 @@
<istrue value="${isLinuxARMv6}" />
</and>
</condition>
-
- <echo message="isI386=${isI386}" />
- <echo message="isAMD64=${isAMD64}" />
- <echo message="is64Bit=${is64Bit}" />
- <echo message="isAbiEabiGnuArmel=${isAbiEabiGnuArmel}" />
- <echo message="isAbiEabiGnuArmhf=${isAbiEabiGnuArmhf}" />
- <echo message="jvmDataModel32Bit=${jvmDataModel32Bit}" />
- <echo message="jvmDataModel64Bit=${jvmDataModel64Bit}" />
- <echo message="jvmDataModel.arg=${jvmDataModel.arg}" />
- <echo message="FreeBSD=${isFreeBSD}" />
- <echo message="FreeBSDX86=${isFreeBSDX86}" />
- <echo message="FreeBSDAMD64=${isFreeBSDAMD64}" />
- <echo message="HPUX=${isHPUX}" />
- <echo message="IA64=${isIA64}" />
- <echo message="Android=${isAndroid}" />
- <echo message="AndroidARMv6=${isAndroidARMv6}" />
- <echo message="AndroidARMv6Armel=${isAndroidARMv6Armel}" />
- <echo message="AndroidARMv6Armhf=${isAndroidARMv6Armhf}" />
- <echo message="Linux=${isLinux}" />
- <echo message="LinuxAMD64=${isLinuxAMD64}" />
- <echo message="LinuxIA64=${isLinuxIA64}" />
- <echo message="LinuxX86=${isLinuxX86}" />
- <echo message="LinuxARMv6=${isLinuxARMv6}" />
- <echo message="LinuxARMv6Armel=${isLinuxARMv6Armel}" />
- <echo message="LinuxARMv6Armhf=${isLinuxARMv6Armhf}" />
- <echo message="LinuxAlpha=${isLinuxAlpha}" />
- <echo message="LinuxHppa=${isLinuxHppa}" />
- <echo message="LinuxMips=${isLinuxMips}" />
- <echo message="LinuxMipsel=${isLinuxMipsel}" />
- <echo message="LinuxPpc=${isLinuxPpc}" />
- <echo message="Linuxs390=${isLinuxs390}" />
- <echo message="Linuxs390x=${isLinuxs390x}" />
- <echo message="LinuxSparc=${isLinuxSparc}" />
- <echo message="OS X=${isOSX}" />
- <echo message="OS X PPC=${use.macosppc}" />
- <echo message="OS X x32=${use.macosx32}" />
- <echo message="OS X x64=${use.macosx64}" />
- <echo message="Solaris=${isSolaris}" />
- <echo message="Solaris32Bit=${isSolaris32Bit}" />
- <echo message="Solaris64Bit=${isSolaris64Bit}" />
- <echo message="SolarisSparc=${isSolarisSparc}" />
- <echo message="SolarisSparcv9=${isSolarisSparcv9}" />
- <echo message="SolarisAMD64=${isSolarisAMD64}" />
- <echo message="SolarisX86=${isSolarisX86}" />
- <echo message="Unix=${isUnix}" />
- <echo message="Windows=${isWindows}" />
- <echo message="X11=${isX11}" />
- <echo message="os=${os.name}" />
- <echo message="os=${os.version}" />
- <echo message="arch=${os.arch}" />
</target>
+ <!-- Consult jogamp.common.os.PlatformPropsImpl.getOSAndArch(..) to complete/sync mapping! -->
+
<target name="gluegen.cpptasks.detect.os.freebsd.x86" unless="gluegen.cpptasks.detected.os.2" if="isFreeBSDX86">
<property name="os.and.arch" value="freebsd-i586" />
</target>
@@ -629,6 +657,10 @@
<property name="os.and.arch" value="linux-armv6hf" />
</target>
+ <target name="gluegen.cpptasks.detect.os.linux.aarch64" unless="gluegen.cpptasks.detected.os.2" if="isLinuxARM64">
+ <property name="os.and.arch" value="linux-aarch64" />
+ </target>
+
<target name="gluegen.cpptasks.detect.os.linux.alpha" unless="gluegen.cpptasks.detected.os.2" if="isLinuxAlpha">
<property name="os.and.arch" value="linux-alpha" />
</target>
@@ -649,6 +681,18 @@
<property name="os.and.arch" value="linux-ppc" />
</target>
+ <target name="gluegen.cpptasks.detect.os.linux.ppc64" unless="gluegen.cpptasks.detected.os.2" if="isLinuxPpc64">
+ <property name="os.and.arch" value="linux-ppc64" />
+ </target>
+
+ <target name="gluegen.cpptasks.detect.os.linux.ppc64le" unless="gluegen.cpptasks.detected.os.2" if="isLinuxPpc64le">
+ <property name="os.and.arch" value="linux-ppc64le" />
+ </target>
+
+ <target name="gluegen.cpptasks.detect.os.linux.riscv64" unless="gluegen.cpptasks.detected.os.2" if="isLinuxRiscV64">
+ <property name="os.and.arch" value="linux-riscv64" />
+ </target>
+
<target name="gluegen.cpptasks.detect.os.linux.s390" unless="gluegen.cpptasks.detected.os.2" if="isLinuxs390">
<property name="os.and.arch" value="linux-s390" />
</target>
@@ -669,13 +713,34 @@
<property name="os.and.arch" value="android-armv6hf" />
</target>
- <target name="gluegen.cpptasks.detect.os.linux" depends="gluegen.cpptasks.detect.os.linux.amd64,gluegen.cpptasks.detect.os.linux.ia64,gluegen.cpptasks.detect.os.linux.x86,gluegen.cpptasks.detect.os.linux.armv6.armel,gluegen.cpptasks.detect.os.linux.armv6.armhf,gluegen.cpptasks.detect.os.android.armv6.armel,gluegen.cpptasks.detect.os.android.armv6.armhf,gluegen.cpptasks.detect.os.linux.alpha,gluegen.cpptasks.detect.os.linux.hppa,gluegen.cpptasks.detect.os.linux.mips,gluegen.cpptasks.detect.os.linux.mipsel,gluegen.cpptasks.detect.os.linux.ppc,gluegen.cpptasks.detect.os.linux.s390,gluegen.cpptasks.detect.os.linux.s390x,gluegen.cpptasks.detect.os.linux.sparc" unless="gluegen.cpptasks.detected.os.2" />
+ <target name="gluegen.cpptasks.detect.os.android.aarch64" unless="gluegen.cpptasks.detected.os.2" if="isAndroidARM64">
+ <property name="os.and.arch" value="android-aarch64" />
+ </target>
+
+ <target name="gluegen.cpptasks.detect.os.android.x86" unless="gluegen.cpptasks.detected.os.2" if="isAndroidX86">
+ <property name="os.and.arch" value="android-x86" />
+ </target>
+
+ <target name="gluegen.cpptasks.detect.os.linux" depends="gluegen.cpptasks.detect.os.linux.amd64,gluegen.cpptasks.detect.os.linux.ia64,gluegen.cpptasks.detect.os.linux.x86,gluegen.cpptasks.detect.os.linux.armv6.armel,gluegen.cpptasks.detect.os.linux.armv6.armhf,gluegen.cpptasks.detect.os.android.armv6.armel,gluegen.cpptasks.detect.os.linux.aarch64,gluegen.cpptasks.detect.os.android.armv6.armhf,gluegen.cpptasks.detect.os.android.aarch64,gluegen.cpptasks.detect.os.android.x86,gluegen.cpptasks.detect.os.linux.alpha,gluegen.cpptasks.detect.os.linux.hppa,gluegen.cpptasks.detect.os.linux.mips,gluegen.cpptasks.detect.os.linux.mipsel,gluegen.cpptasks.detect.os.linux.ppc,gluegen.cpptasks.detect.os.linux.ppc64,gluegen.cpptasks.detect.os.linux.ppc64le,gluegen.cpptasks.detect.os.linux.riscv64,gluegen.cpptasks.detect.os.linux.s390,gluegen.cpptasks.detect.os.linux.s390x,gluegen.cpptasks.detect.os.linux.sparc" unless="gluegen.cpptasks.detected.os.2" />
<target name="gluegen.cpptasks.detect.os.osx" unless="gluegen.cpptasks.detected.os.2" if="isOSX">
- <property name="native.library.suffix" value="*lib" />
+ <property name="native.library.prefix" value="lib" />
+ <property name="native.library.suffix" value="dylib" />
<property name="os.and.arch" value="macosx-universal" />
</target>
+ <target name="gluegen.cpptasks.detect.os.ios.amd64" unless="gluegen.cpptasks.detected.os.2" if="isIOSAmd64">
+ <property name="native.library.prefix" value="lib" />
+ <property name="native.library.suffix" value="a" />
+ <property name="os.and.arch" value="ios-amd64" />
+ </target>
+
+ <target name="gluegen.cpptasks.detect.os.ios.arch64" unless="gluegen.cpptasks.detected.os.2" if="isIOSArm64">
+ <property name="native.library.prefix" value="lib" />
+ <property name="native.library.suffix" value="a" />
+ <property name="os.and.arch" value="ios-arm64" />
+ </target>
+
<target name="gluegen.cpptasks.detect.os.solaris.sparc" unless="gluegen.cpptasks.detected.os.2" if="isSolarisSparc">
<property name="os.and.arch" value="solaris-sparc" />
</target>
@@ -695,6 +760,7 @@
<target name="gluegen.cpptasks.detect.os.solaris" depends="gluegen.cpptasks.detect.os.solaris.sparc,gluegen.cpptasks.detect.os.solaris.sparcv9,gluegen.cpptasks.detect.os.solaris.amd64,gluegen.cpptasks.detect.os.solaris.x86" unless="gluegen.cpptasks.detected.os.2" />
<target name="gluegen.cpptasks.detect.os.unix" unless="gluegen.cpptasks.detected.os.2" if="isUnix">
+ <property name="native.library.prefix" value="lib" />
<property name="native.library.suffix" value="so" />
</target>
@@ -707,10 +773,11 @@
</target>
<target name="gluegen.cpptasks.detect.os.windows" depends="gluegen.cpptasks.detect.os.windows.amd64,gluegen.cpptasks.detect.os.windows.x86" unless="gluegen.cpptasks.detected.os.2" if="isWindows">
+ <property name="native.library.prefix" value="" />
<property name="native.library.suffix" value="dll" />
</target>
- <target name="gluegen.cpptasks.detect.os.2" depends="gluegen.cpptasks.detect.os.refine,gluegen.cpptasks.detect.os.freebsd,gluegen.cpptasks.detect.os.hpux,gluegen.cpptasks.detect.os.linux,gluegen.cpptasks.detect.os.osx,gluegen.cpptasks.detect.os.solaris,gluegen.cpptasks.detect.os.unix,gluegen.cpptasks.detect.os.windows" unless="gluegen.cpptasks.detected.os.2">
+ <target name="gluegen.cpptasks.detect.os.2" depends="gluegen.cpptasks.detect.os.refine,gluegen.cpptasks.detect.os.freebsd,gluegen.cpptasks.detect.os.hpux,gluegen.cpptasks.detect.os.linux,gluegen.cpptasks.detect.os.osx,gluegen.cpptasks.detect.os.ios.amd64,gluegen.cpptasks.detect.os.ios.arch64,gluegen.cpptasks.detect.os.solaris,gluegen.cpptasks.detect.os.unix,gluegen.cpptasks.detect.os.windows" unless="gluegen.cpptasks.detected.os.2">
<propertyregex property="os.and.arch.dot"
input="${os.and.arch}"
regexp="-"
@@ -724,9 +791,13 @@
<echo message="os and arch: ${os.and.arch}" />
<echo message="os and arch.dot: ${os.and.arch.dot}" />
<echo message="os and arch.slash: ${os.and.arch.slash}" />
+ <echo message="native library: prefix '${native.library.prefix}', suffix '${native.library.suffix}'" />
</target>
<target name="gluegen.cpptasks.detect.os" depends="gluegen.properties.load.user,gluegen.cpptasks.detect.os.custom,gluegen.cpptasks.detect.os.1,gluegen.cpptasks.detect.os.2">
+ <echo message="gluegen.cpptasks.detected.os=${gluegen.cpptasks.detected.os}" />
+ <echo message="gluegen.cpptasks.detected.os.2=${gluegen.cpptasks.detected.os.2}" />
+
<property name="gluegen.cpptasks.detected.os" value="true" />
<property name="gluegen.cpptasks.detected.os.2" value="true" />
@@ -736,6 +807,10 @@
<isset property="isOSX"/>
</condition>
<condition property="system.env.library.path"
+ value="DYLD_LIBRARY_PATH">
+ <isset property="isIOS"/>
+ </condition>
+ <condition property="system.env.library.path"
value="LD_LIBRARY_PATH">
<isset property="isUnix"/>
</condition>
@@ -747,8 +822,77 @@
<!-- NOTE: the value of the c.strip.tool and c.strip.args attribute will not be overridden if already set externally -->
<property name="c.strip.tool" value="strip" />
<condition property="c.strip.args" value="-S -x"><isset property="isOSX"/></condition>
+ <condition property="c.strip.args" value="-S -x"><isset property="isIOS"/></condition>
<property name="c.strip.args" value="" />
+ <condition property="awk_executable" value="gawk" else="awk"><isset property="isWindows"/></condition>
+
+ <condition property="build.dynamiclibs" value="false" else="true"><istrue value="${isIOS}"/></condition>
+ <condition property="build.staticlibs" value="false" else="true"><istrue value="${build.dynamiclibs}"/></condition>
+ <condition property="output.lib.type" value="shared" else="static"><istrue value="${build.dynamiclibs}"/></condition>
+
+ <echo message="isCrosscompilation=${isCrosscompilation}" />
+ <echo message="isI386=${isI386}" />
+ <echo message="isAMD64=${isAMD64}" />
+ <echo message="is64Bit=${is64Bit}" />
+ <echo message="isAbiEabiGnuArmel=${isAbiEabiGnuArmel}" />
+ <echo message="isAbiEabiGnuArmhf=${isAbiEabiGnuArmhf}" />
+ <echo message="jvmDataModel32Bit=${jvmDataModel32Bit}" />
+ <echo message="jvmDataModel64Bit=${jvmDataModel64Bit}" />
+ <echo message="jvmDataModel.arg=${jvmDataModel.arg}" />
+ <echo message="FreeBSD=${isFreeBSD}" />
+ <echo message="FreeBSDX86=${isFreeBSDX86}" />
+ <echo message="FreeBSDAMD64=${isFreeBSDAMD64}" />
+ <echo message="HPUX=${isHPUX}" />
+ <echo message="IA64=${isIA64}" />
+ <echo message="Android=${isAndroid}" />
+ <echo message="AndroidARMv6=${isAndroidARMv6}" />
+ <echo message="AndroidARM64=${isAndroidARM64}" />
+ <echo message="AndroidARMv6Armel=${isAndroidARMv6Armel}" />
+ <echo message="AndroidARMv6Armhf=${isAndroidARMv6Armhf}" />
+ <echo message="AndroidX86=${isAndroidX86}" />
+ <echo message="Linux=${isLinux}" />
+ <echo message="LinuxAMD64=${isLinuxAMD64}" />
+ <echo message="LinuxIA64=${isLinuxIA64}" />
+ <echo message="LinuxX86=${isLinuxX86}" />
+ <echo message="LinuxARMv6=${isLinuxARMv6}" />
+ <echo message="LinuxARM64=${isLinuxARM64}" />
+ <echo message="LinuxARMv6Armel=${isLinuxARMv6Armel}" />
+ <echo message="LinuxARMv6Armhf=${isLinuxARMv6Armhf}" />
+ <echo message="LinuxAlpha=${isLinuxAlpha}" />
+ <echo message="LinuxHppa=${isLinuxHppa}" />
+ <echo message="LinuxMips=${isLinuxMips}" />
+ <echo message="LinuxMipsel=${isLinuxMipsel}" />
+ <echo message="LinuxPpc=${isLinuxPpc}" />
+ <echo message="LinuxPpc64=${isLinuxPpc64}" />
+ <echo message="LinuxPpc64le=${isLinuxPpc64le}" />
+ <echo message="LinuxRiscV64=${isLinuxRiscV64}" />
+ <echo message="Linuxs390=${isLinuxs390}" />
+ <echo message="Linuxs390x=${isLinuxs390x}" />
+ <echo message="LinuxSparc=${isLinuxSparc}" />
+ <echo message="OS X=${isOSX}" />
+ <echo message="OS X PPC=${use.macosppc}" />
+ <echo message="OS X x32=${use.macosx32}" />
+ <echo message="OS X x64=${use.macosx64}" />
+ <echo message="iOS=${isIOS}" />
+ <echo message="iOSAmd64=${isIOSAmd64}" />
+ <echo message="iOSArm64=${isIOSArm64}" />
+ <echo message="Solaris=${isSolaris}" />
+ <echo message="Solaris32Bit=${isSolaris32Bit}" />
+ <echo message="Solaris64Bit=${isSolaris64Bit}" />
+ <echo message="SolarisSparc=${isSolarisSparc}" />
+ <echo message="SolarisSparcv9=${isSolarisSparcv9}" />
+ <echo message="SolarisAMD64=${isSolarisAMD64}" />
+ <echo message="SolarisX86=${isSolarisX86}" />
+ <echo message="Unix=${isUnix}" />
+ <echo message="Windows=${isWindows}" />
+ <echo message="X11=${isX11}" />
+ <echo message="os=${os.name}" />
+ <echo message="os=${os.version}" />
+ <echo message="arch=${os.arch}" />
+ <echo message="build.dynamiclibs=${build.dynamiclibs}" />
+ <echo message="build.staticlibs=${build.staticlibs}" />
+ <echo message="output.lib.type=${output.lib.type}" />
</target>
<!-- Detect compiler setup, in particular on Windows; separated
@@ -879,28 +1023,23 @@
<!-- ================================================================== -->
<!--
- - Set up java.home.dir appropriately on all platforms.
+ - Set up 'java.home.dir' appropriately on all platforms.
+ - Used to be the directory above 'java.home' jre path,
+ - since the <java-install-dir>'s underlying jre was selected for ANT's 'java.home'.
+ - JDK 9 and later's installation layout should no more contain '<java-install-dir>/jre',
+ - hence java.home.dir' should be equal to ANT's 'java.home'.
+ - However, we still probe for the traditional installation layout, to enable individual setups.
+ - Hence we still probe for '${java.home}/../jre' to define 'java.home.dir'
+ - and also probe for '${java.home.dir}/jre/lib' to define 'java.lib.dir.platform' below.
-->
- <target name="setup.java.home.dir.nonmacosx" unless="isOSX">
- <!-- java home dir is up one directory as java.home points to '<java-install-dir>/jre' -->
- <property name="java.home.dir" value="${java.home}/.." />
- <property name="java.includes.dir" value="${java.home.dir}/include" />
- </target>
- <target name="setup.java.home.dir.macosx" if="isOSX">
- <!-- Java7 std location -->
+ <target name="setup.java.home.dir">
+ <property name="java.home.dir" value="${java.home}" />
<condition property="java.home.dir"
- value="${java.home}/..">
- <available file="${java.home}/../include/jni.h"/>
+ value="${java.home}/.."
+ else="${java.home}" >
+ <available file="${java.home}/../jre" type="dir" />
</condition>
- <condition property="java.includes.dir"
- value="${java.home}/../include">
- <available file="${java.home}/../include/jni.h"/>
- </condition>
- <!-- Fallback value Java6 -->
- <property name="java.home.dir" value="/System/Library/Frameworks/JavaVM.framework/Home" />
- <property name="java.includes.dir" value="/System/Library/Frameworks/JavaVM.framework/Headers" />
- </target>
- <target name="setup.java.home.dir" depends="setup.java.home.dir.nonmacosx,setup.java.home.dir.macosx">
+ <property name="java.includes.dir" value="${gluegen.root.abs-path}/make/stub_includes/jni" />
<echo message="java.home.dir ${java.home.dir}" />
<echo message="java.includes.dir ${java.includes.dir}" />
</target>
@@ -950,6 +1089,8 @@
<compilerarg value="-fPIC"/>
<compilerarg value="-m64"/>
<defineset>
+ <define name="__LP64__" /> <!-- default pre-defined macro for 64bit unix -->
+
<define name="__unix__"/>
<define name="__X11__" if="isX11"/>
<define name="_DEBUG" if="c.compiler.use-debug"/>
@@ -961,8 +1102,8 @@
</compiler>
<!-- Using default compiler settings - utilize:
- - lib/gluegen-cpptasks-linux-armv6.xml (armv5te + softfp), or
- lib/gluegen-cpptasks-linux-armv6hf.xml (armv6 + hardfp)
+ - lib/gluegen-cpptasks-linux-aarch64.xml (armv8 64bit)
for official JogAmp builds! -->
<compiler id="compiler.cfg.linux.armv6" name="${gcc.compat.compiler}">
<defineset>
@@ -977,6 +1118,26 @@
<compilerarg value="${gluegen.root.abs-path}/make/stub_includes/platform/glibc-compat-symbols.h" />
</compiler>
+ <!-- Using default compiler settings - utilize:
+ - lib/gluegen-cpptasks-linux-armv6hf.xml (armv6 + hardfp)
+ - lib/gluegen-cpptasks-linux-aarch64.xml (armv8 64bit)
+ for official JogAmp builds! -->
+ <compiler id="compiler.cfg.linux.aarch64" name="${gcc.compat.compiler}">
+ <defineset>
+ <define name="__LP64__" /> <!-- default pre-defined macro for 64bit unix -->
+ <define name="__aarch64__" /> <!-- default pre-defined macro for armv8-a, 64bit -->
+
+ <define name="__unix__"/>
+ <define name="__X11__" if="isX11"/>
+ <define name="_DEBUG" if="c.compiler.use-debug"/>
+ <define name="DEBUG" if="c.compiler.use-debug"/>
+ <define name="NDEBUG" unless="c.compiler.use-debug"/>
+ </defineset>
+ <compilerarg value="-fpic" />
+ <compilerarg value="-include"/>
+ <compilerarg value="${gluegen.root.abs-path}/make/stub_includes/platform/glibc-compat-symbols.h" />
+ </compiler>
+
<compiler id="compiler.cfg.android" name="${gcc.compat.compiler}">
<!-- shall be defined in custom ${gluegen-cpptasks.file} ! -->
</compiler>
@@ -1055,6 +1216,8 @@
<!-- compilerarg value="-xarch=amd64" / -->
<!-- compilerarg value="-xcache=64/64/2:1024/64/16" / -->
<defineset>
+ <define name="__LP64__" /> <!-- default pre-defined macro for 64bit unix -->
+
<define name="__unix__"/>
<define name="__X11__" if="isX11"/>
<define name="_DEBUG" if="c.compiler.use-debug"/>
@@ -1064,20 +1227,49 @@
</defineset>
</compiler>
- <!-- MacOSX compiler configuration -->
+ <!--
+ MacOSX compiler configuration.
+ See and sync-with doc/HowToBuild.html and doc/JogAmpMacOSVersions.md
+ -->
<compiler id="compiler.cfg.macosx" name="${gcc.compat.compiler}">
- <!-- Note: Apple doesn't seem to provide ppc binaries on Snow Leopard -->
- <compilerarg value="-arch" if="use.macosppc"/>
- <compilerarg value="ppc" if="use.macosppc"/>
- <compilerarg value="-arch" if="use.macosx32"/>
- <compilerarg value="i386" if="use.macosx32"/>
<compilerarg value="-arch" if="use.macosx64"/>
<compilerarg value="x86_64" if="use.macosx64"/>
- <!-- Note: Apple doesn't seem to provide ppc64 binaries on Leopard -->
+ <compilerarg value="-arch" if="use.macosx64"/>
+ <compilerarg value="arm64" if="use.macosx64"/>
+ <compilerarg value="-Wmost" />
+ <compilerarg value="-ObjC" />
+ <compilerarg value="-mmacosx-version-min=10.7"/>
+ <!-- sysincludepath path="${macosx.sdkroot}" if="macosx.sdkroot"/ -->
+ <defineset>
+ <define name="_DEBUG" if="c.compiler.use-debug"/>
+ <define name="DEBUG" if="c.compiler.use-debug"/>
+ <define name="NDEBUG" unless="c.compiler.use-debug"/>
+ </defineset>
+ </compiler>
+
+ <compiler id="compiler.cfg.ios.amd64" name="${gcc.compat.compiler}">
+ <!-- compilerarg value="-v"/ -->
+ <compilerarg value="-arch"/>
+ <compilerarg value="x86_64"/>
+ <compilerarg value="-Wmost" />
+ <compilerarg value="-ObjC" />
+ <compilerarg value="-miphoneos-version-min=11.0"/>
+ <!-- sysincludepath path="${macosx.sdkroot}" if="macosx.sdkroot"/ -->
+ <defineset>
+ <define name="_DEBUG" if="c.compiler.use-debug"/>
+ <define name="DEBUG" if="c.compiler.use-debug"/>
+ <define name="NDEBUG" unless="c.compiler.use-debug"/>
+ </defineset>
+ </compiler>
+
+ <compiler id="compiler.cfg.ios.arm64" name="${gcc.compat.compiler}">
+ <!-- compilerarg value="-v"/ -->
+ <compilerarg value="-arch"/>
+ <compilerarg value="arm64"/>
<compilerarg value="-Wmost" />
<compilerarg value="-ObjC" />
- <compilerarg value="-mmacosx-version-min=10.5"/>
+ <compilerarg value="-miphoneos-version-min=11.0"/>
<!-- sysincludepath path="${macosx.sdkroot}" if="macosx.sdkroot"/ -->
<defineset>
<define name="_DEBUG" if="c.compiler.use-debug"/>
@@ -1165,27 +1357,43 @@
<linker id="linker.cfg.linux" name="${gcc.compat.compiler}">
<linkerarg value="-static-libgcc" if="isGCC"/>
+ <linkerarg value="-static-libstdc++" if="isGCC"/>
</linker>
<linker id="linker.cfg.linux.x86" name="${gcc.compat.compiler}">
<linkerarg value="-m32"/>
<linkerarg value="-static-libgcc" if="isGCC"/>
+ <linkerarg value="-static-libstdc++" if="isGCC"/>
</linker>
<linker id="linker.cfg.linux.amd64" name="${gcc.compat.compiler}">
<linkerarg value="-m64"/>
<linkerarg value="-static-libgcc" if="isGCC"/>
+ <linkerarg value="-static-libstdc++" if="isGCC"/>
</linker>
<!-- Using default compiler settings - utilize:
- - lib/gluegen-cpptasks-linux-armv6.xml (armv5te + softfp), or
- lib/gluegen-cpptasks-linux-armv6hf.xml (armv6 + hardfp)
+ - lib/gluegen-cpptasks-linux-aarch64.xml (armv8 64bit)
for official JogAmp builds! -->
<linker id="linker.cfg.linux.armv6" name="${gcc.compat.compiler}">
<linkerarg value="-fpic" />
<linkerarg value="-nostdlib" />
<linkerarg value="-Bdynamic" />
<linkerarg value="-static-libgcc" if="isGCC"/>
+ <linkerarg value="-static-libstdc++" if="isGCC"/>
+ </linker>
+
+ <!-- Using default compiler settings - utilize:
+ - lib/gluegen-cpptasks-linux-armv6hf.xml (armv6 + hardfp)
+ - lib/gluegen-cpptasks-linux-aarch64.xml (armv8 64bit)
+ for official JogAmp builds! -->
+ <linker id="linker.cfg.linux.aarch64" name="${gcc.compat.compiler}">
+ <linkerarg value="-fpic" />
+ <linkerarg value="-nostdlib" />
+ <linkerarg value="-Bdynamic" />
+ <linkerarg value="-static-libgcc" if="isGCC"/>
+ <linkerarg value="-static-libstdc++" if="isGCC"/>
</linker>
<linker id="linker.cfg.linux.alpha" name="${gcc.compat.compiler}">
@@ -1203,6 +1411,15 @@
<linker id="linker.cfg.linux.ppc" name="${gcc.compat.compiler}">
</linker>
+ <linker id="linker.cfg.linux.ppc64" name="${gcc.compat.compiler}">
+ </linker>
+
+ <linker id="linker.cfg.linux.ppc64le" name="${gcc.compat.compiler}">
+ </linker>
+
+ <linker id="linker.cfg.linux.riscv64" name="${gcc.compat.compiler}">
+ </linker>
+
<linker id="linker.cfg.linux.s390" name="${gcc.compat.compiler}">
</linker>
@@ -1232,32 +1449,51 @@
<linker id="linker.cfg.solaris" name="${gcc.compat.compiler}">
<linkerarg value="-m32"/>
<linkerarg value="-static-libgcc" if="isGCC"/>
+ <linkerarg value="-static-libstdc++" if="isGCC"/>
</linker>
<linker id="linker.cfg.solaris.sparcv9" name="${gcc.compat.compiler}">
<linkerarg value="-xarch=v9a" />
<linkerarg value="-static-libgcc" if="isGCC"/>
+ <linkerarg value="-static-libstdc++" if="isGCC"/>
</linker>
<linker id="linker.cfg.solaris.amd64" name="${gcc.compat.compiler}">
<linkerarg value="-m64"/>
<linkerarg value="-static-libgcc" if="isGCC"/>
+ <linkerarg value="-static-libstdc++" if="isGCC"/>
<!-- linkerarg value="-xarch=amd64" / -->
</linker>
<!-- MacOSX linker configuration -->
<linker id="linker.cfg.macosx" name="${gcc.compat.compiler}">
- <!-- Note: Apple doesn't seem to provide ppc binaries on Snow Leopard -->
- <linkerarg value="-arch" if="use.macosppc"/>
- <linkerarg value="ppc" if="use.macosppc"/>
- <linkerarg value="-arch" if="use.macosx32"/>
- <linkerarg value="i386" if="use.macosx32"/>
+ <!-- compilerarg value="-v"/ -->
<linkerarg value="-arch" if="use.macosx64"/>
<linkerarg value="x86_64" if="use.macosx64"/>
- <linkerarg value="-mmacosx-version-min=10.5"/>
+ <linkerarg value="-arch" if="use.macosx64"/>
+ <linkerarg value="arm64" if="use.macosx64"/>
+ <linkerarg value="-mmacosx-version-min=10.7"/>
<linkerarg value="-static-libgcc" if="isGCC"/>
- <!-- Note: Apple doesn't seem to provide ppc64 binaries on Leopard -->
+ <linkerarg value="-static-libstdc++" if="isGCC"/>
+ </linker>
+
+ <linker id="linker.cfg.ios.amd64" name="${gcc.compat.compiler}">
+ <!-- compilerarg value="-v"/ -->
+ <linkerarg value="-arch"/>
+ <linkerarg value="x86_64"/>
+ <linkerarg value="-miphoneos-version-min=11.0"/>
+ <linkerarg value="-static-libgcc" if="isGCC"/>
+ <linkerarg value="-static-libstdc++" if="isGCC"/>
+ </linker>
+
+ <linker id="linker.cfg.ios.arm64" name="${gcc.compat.compiler}">
+ <!-- compilerarg value="-v"/ -->
+ <linkerarg value="-arch"/>
+ <linkerarg value="arm64"/>
+ <linkerarg value="-miphoneos-version-min=11.0"/>
+ <linkerarg value="-static-libgcc" if="isGCC"/>
+ <linkerarg value="-static-libstdc++" if="isGCC"/>
</linker>
<!-- Windows linker configuration -->
@@ -1266,6 +1502,7 @@
<linker id="linker.cfg.linux64.mingw64" classname="net.sf.antcontrib.cpptasks.gcc.GccLinker">
<linkerarg value="-m64"/>
<linkerarg value="-static-libgcc" if="isGCC"/>
+ <linkerarg value="-static-libstdc++" if="isGCC"/>
</linker>
<!--linker id="linker.cfg.linux64.mingw32" classname="net.sf.antcontrib.cpptasks.gcc.Gcc32Linker"-->
@@ -1273,6 +1510,7 @@
<linkerarg value="-m32"/>
<linkerarg value="-Wl,--kill-at" /> <!-- remove @ from function names, ie no __stdcall @nn -->
<linkerarg value="-static-libgcc" if="isGCC"/>
+ <linkerarg value="-static-libstdc++" if="isGCC"/>
</linker>
<linker id="linker.cfg.win32.mingw" name="${gcc.compat.compiler}" incremental="false">
@@ -1281,6 +1519,7 @@
<linkerarg value="-Wl,--enable-stdcall-fixup"/> <!-- for linking against dll directly -->
<linkerarg value="-Wl,--kill-at" /> <!-- remove @ from function names, ie no __stdcall @nn -->
<linkerarg value="-static-libgcc" if="isGCC"/>
+ <linkerarg value="-static-libstdc++" if="isGCC"/>
</linker>
<linker id="linker.cfg.win64.mingw" name="${gcc.compat.compiler}" incremental="false">
@@ -1289,6 +1528,7 @@
<linkerarg value="-Wl,--enable-stdcall-fixup"/> <!-- for linking against dll directly -->
<linkerarg value="-Wl,--kill-at" /> <!-- remove @ from function names, ie no __stdcall @nn -->
<linkerarg value="-static-libgcc" if="isGCC"/>
+ <linkerarg value="-static-libstdc++" if="isGCC"/>
</linker>
<linker id="linker.cfg.win32.msvc" name="msvc" incremental="false">
@@ -1309,8 +1549,8 @@
-->
<target name="gluegen.cpptasks.declare.compiler.environment" >
<condition property="java.lib.dir.platform"
- value="${env.TARGET_JAVA_LIBS}" >
- <available file="${env.TARGET_JAVA_LIBS}" type="dir" />
+ value="${TARGET_JAVA_LIBS}" >
+ <available file="${TARGET_JAVA_LIBS}" type="dir" />
</condition>
</target>
@@ -1354,7 +1594,7 @@
<echo message="Win64.MingW" />
<property name="compiler.cfg.id.base" value="compiler.cfg.win64.mingw" />
<property name="linker.cfg.id.base" value="linker.cfg.win64.mingw" />
- <property name="java.lib.dir.platform" value="${java.home.dir}/jre/bin" /> <!-- link against dll directly (not lib)-->
+ <property name="java.lib.dir.platform" value="${java.home.dir}/bin" /> <!-- link against dll directly (not lib)-->
</target>
<target name="gluegen.cpptasks.declare.compiler.win32" depends="gluegen.cpptasks.declare.compiler.win32.vc6,gluegen.cpptasks.declare.compiler.win32.vc7,gluegen.cpptasks.declare.compiler.win32.vc8,gluegen.cpptasks.declare.compiler.win32.vc8_x64,gluegen.cpptasks.declare.compiler.win32.vc9,gluegen.cpptasks.declare.compiler.win32.mingw,gluegen.cpptasks.declare.compiler.win64.mingw" if="isWindows">
@@ -1366,88 +1606,180 @@
<echo message="Linux.x86" />
<property name="compiler.cfg.id.base" value="compiler.cfg.linux.x86" />
<property name="linker.cfg.id.base" value="linker.cfg.linux.x86" />
- <property name="java.lib.dir.platform" value="${java.home.dir}/jre/lib/i386" />
+ <available property="java.lib.dir.platform" value="${java.home.dir}/jre/lib/i386"
+ file="${java.home.dir}/jre/lib/i386/libjava.so"/>
+ <available property="java.lib.dir.platform" value="${java.home.dir}/lib/i386"
+ file="${java.home.dir}/lib/i386/libjava.so"/>
+ <property name="java.lib.dir.platform" value="${java.home.dir}/lib"/> <!-- new default -->
</target>
<target name="gluegen.cpptasks.declare.compiler.linux.amd64" if="isLinuxAMD64">
<echo message="Linux.AMD64" />
<property name="compiler.cfg.id.base" value="compiler.cfg.linux.amd64" />
<property name="linker.cfg.id.base" value="linker.cfg.linux.amd64" />
- <property name="java.lib.dir.platform" value="${java.home.dir}/jre/lib/amd64" />
+ <available property="java.lib.dir.platform" value="${java.home.dir}/jre/lib/amd64"
+ file="${java.home.dir}/jre/lib/amd64/libjava.so"/>
+ <available property="java.lib.dir.platform" value="${java.home.dir}/lib/amd64"
+ file="${java.home.dir}/lib/amd64/libjava.so"/>
+ <property name="java.lib.dir.platform" value="${java.home.dir}/lib"/> <!-- new default -->
</target>
<target name="gluegen.cpptasks.declare.compiler.linux.alpha" if="isLinuxAlpha">
<echo message="Linux.alpha" />
<property name="compiler.cfg.id.base" value="compiler.cfg.linux.alpha" />
<property name="linker.cfg.id.base" value="linker.cfg.linux.alpha" />
- <property name="java.lib.dir.platform" value="${java.home.dir}/jre/lib/alpha" />
+ <available property="java.lib.dir.platform" value="${java.home.dir}/jre/lib/alpha"
+ file="${java.home.dir}/jre/lib/alpha/libjava.so"/>
+ <available property="java.lib.dir.platform" value="${java.home.dir}/lib/alpha"
+ file="${java.home.dir}/lib/alpha/libjava.so"/>
+ <property name="java.lib.dir.platform" value="${java.home.dir}/lib"/> <!-- new default -->
</target>
<target name="gluegen.cpptasks.declare.compiler.linux.armv6" if="isLinuxARMv6">
<echo message="Linux.armv6" />
<property name="compiler.cfg.id.base" value="compiler.cfg.linux.armv6" />
<property name="linker.cfg.id.base" value="linker.cfg.linux.armv6" />
- <property name="java.lib.dir.platform" value="${java.home.dir}/jre/lib/arm" />
+ <available property="java.lib.dir.platform" value="${java.home.dir}/jre/lib/arm"
+ file="${java.home.dir}/jre/lib/arm/libjava.so"/>
+ <available property="java.lib.dir.platform" value="${java.home.dir}/lib/arm"
+ file="${java.home.dir}/lib/arm/libjava.so"/>
+ <property name="java.lib.dir.platform" value="${java.home.dir}/lib"/> <!-- new default -->
+ </target>
+
+ <target name="gluegen.cpptasks.declare.compiler.linux.aarch64" if="isLinuxARM64">
+ <echo message="Linux.aarch64" />
+ <property name="compiler.cfg.id.base" value="compiler.cfg.linux.aarch64" />
+ <property name="linker.cfg.id.base" value="linker.cfg.linux.aarch64" />
+ <available property="java.lib.dir.platform" value="${java.home.dir}/jre/lib/aarch64"
+ file="${java.home.dir}/jre/lib/aarch64/libjava.so"/>
+ <available property="java.lib.dir.platform" value="${java.home.dir}/lib/aarch64"
+ file="${java.home.dir}/lib/aarch64/libjava.so"/>
+ <property name="java.lib.dir.platform" value="${java.home.dir}/lib"/> <!-- new default -->
</target>
<target name="gluegen.cpptasks.declare.compiler.linux.ia64" if="isLinuxIA64">
<echo message="Linux.IA64" />
<property name="compiler.cfg.id.base" value="compiler.cfg.linux" />
<property name="linker.cfg.id.base" value="linker.cfg.linux" />
- <property name="java.lib.dir.platform" value="${java.home.dir}/jre/lib/ia64" />
+ <available property="java.lib.dir.platform" value="${java.home.dir}/jre/lib/ia64"
+ file="${java.home.dir}/jre/lib/ia64/libjava.so"/>
+ <available property="java.lib.dir.platform" value="${java.home.dir}/lib/ia64"
+ file="${java.home.dir}/lib/ia64/libjava.so"/>
+ <property name="java.lib.dir.platform" value="${java.home.dir}/lib"/> <!-- new default -->
</target>
<target name="gluegen.cpptasks.declare.compiler.linux.hppa" if="isLinuxHppa">
<echo message="Linux.hppa" />
<property name="compiler.cfg.id.base" value="compiler.cfg.linux" />
<property name="linker.cfg.id.base" value="linker.cfg.linux" />
- <property name="java.lib.dir.platform" value="${java.home.dir}/jre/lib/hppa" />
+ <available property="java.lib.dir.platform" value="${java.home.dir}/jre/lib/hppa"
+ file="${java.home.dir}/jre/lib/hppa/libjava.so"/>
+ <available property="java.lib.dir.platform" value="${java.home.dir}/lib/hppa"
+ file="${java.home.dir}/lib/hppa/libjava.so"/>
+ <property name="java.lib.dir.platform" value="${java.home.dir}/lib"/> <!-- new default -->
</target>
<target name="gluegen.cpptasks.declare.compiler.linux.mips" if="isLinuxMips">
<echo message="Linux.Mips" />
<property name="compiler.cfg.id.base" value="compiler.cfg.linux" />
<property name="linker.cfg.id.base" value="linker.cfg.linux" />
- <property name="java.lib.dir.platform" value="${java.home.dir}/jre/lib/mips" />
+ <available property="java.lib.dir.platform" value="${java.home.dir}/jre/lib/mips"
+ file="${java.home.dir}/jre/lib/mips/libjava.so"/>
+ <available property="java.lib.dir.platform" value="${java.home.dir}/lib/mips"
+ file="${java.home.dir}/lib/mips/libjava.so"/>
+ <property name="java.lib.dir.platform" value="${java.home.dir}/lib"/> <!-- new default -->
</target>
<target name="gluegen.cpptasks.declare.compiler.linux.mipsel" if="isLinuxMipsel">
<echo message="Linux.Mipsel" />
<property name="compiler.cfg.id.base" value="compiler.cfg.linux" />
<property name="linker.cfg.id.base" value="linker.cfg.linux" />
- <property name="java.lib.dir.platform" value="${java.home.dir}/jre/lib/mipsel" />
+ <available property="java.lib.dir.platform" value="${java.home.dir}/jre/lib/mipsel"
+ file="${java.home.dir}/jre/lib/mipsel/libjava.so"/>
+ <available property="java.lib.dir.platform" value="${java.home.dir}/lib/mipsel"
+ file="${java.home.dir}/lib/mipsel/libjava.so"/>
+ <property name="java.lib.dir.platform" value="${java.home.dir}/lib"/> <!-- new default -->
</target>
<target name="gluegen.cpptasks.declare.compiler.linux.ppc" if="isLinuxPpc">
<echo message="Linux.Ppc" />
<property name="compiler.cfg.id.base" value="compiler.cfg.linux" />
<property name="linker.cfg.id.base" value="linker.cfg.linux" />
- <property name="java.lib.dir.platform" value="${java.home.dir}/jre/lib/ppc" />
+ <available property="java.lib.dir.platform" value="${java.home.dir}/jre/lib/ppc"
+ file="${java.home.dir}/jre/lib/ppc/libjava.so"/>
+ <available property="java.lib.dir.platform" value="${java.home.dir}/lib/ppc"
+ file="${java.home.dir}/lib/ppc/libjava.so"/>
+ <property name="java.lib.dir.platform" value="${java.home.dir}/lib"/> <!-- new default -->
+ </target>
+
+ <target name="gluegen.cpptasks.declare.compiler.linux.ppc64" if="isLinuxPpc64">
+ <echo message="Linux.Ppc64" />
+ <property name="compiler.cfg.id.base" value="compiler.cfg.linux" />
+ <property name="linker.cfg.id.base" value="linker.cfg.linux" />
+ <available property="java.lib.dir.platform" value="${java.home.dir}/jre/lib/ppc64"
+ file="${java.home.dir}/jre/lib/ppc64/libjava.so"/>
+ <available property="java.lib.dir.platform" value="${java.home.dir}/lib/ppc64"
+ file="${java.home.dir}/lib/ppc64/libjava.so"/>
+ <property name="java.lib.dir.platform" value="${java.home.dir}/lib"/> <!-- new default -->
+ </target>
+
+ <target name="gluegen.cpptasks.declare.compiler.linux.ppc64le" if="isLinuxPpc64le">
+ <echo message="Linux.Ppc64le" />
+ <property name="compiler.cfg.id.base" value="compiler.cfg.linux" />
+ <property name="linker.cfg.id.base" value="linker.cfg.linux" />
+ <available property="java.lib.dir.platform" value="${java.home.dir}/jre/lib/ppc64le"
+ file="${java.home.dir}/jre/lib/ppc64le/libjava.so"/>
+ <available property="java.lib.dir.platform" value="${java.home.dir}/lib/ppc64le"
+ file="${java.home.dir}/lib/ppc64le/libjava.so"/>
+ <property name="java.lib.dir.platform" value="${java.home.dir}/lib"/> <!-- new default -->
+ </target>
+
+ <target name="gluegen.cpptasks.declare.compiler.linux.riscv64" if="isLinuxRiscV64">
+ <echo message="Linux.RiscV64" />
+ <property name="compiler.cfg.id.base" value="compiler.cfg.linux" />
+ <property name="linker.cfg.id.base" value="linker.cfg.linux" />
+ <available property="java.lib.dir.platform" value="${java.home.dir}/jre/lib/riscv64"
+ file="${java.home.dir}/jre/lib/riscv64/libjava.so"/>
+ <available property="java.lib.dir.platform" value="${java.home.dir}/lib/riscv64"
+ file="${java.home.dir}/lib/riscv64/libjava.so"/>
+ <property name="java.lib.dir.platform" value="${java.home.dir}/lib"/> <!-- new default -->
</target>
<target name="gluegen.cpptasks.declare.compiler.linux.s390" if="isLinuxs390">
<echo message="Linux.s390" />
<property name="compiler.cfg.id.base" value="compiler.cfg.linux" />
<property name="linker.cfg.id.base" value="linker.cfg.linux" />
- <property name="java.lib.dir.platform" value="${java.home.dir}/jre/lib/s390" />
+ <available property="java.lib.dir.platform" value="${java.home.dir}/jre/lib/s390"
+ file="${java.home.dir}/jre/lib/s390/libjava.so"/>
+ <available property="java.lib.dir.platform" value="${java.home.dir}/lib/s390"
+ file="${java.home.dir}/lib/s390/libjava.so"/>
+ <property name="java.lib.dir.platform" value="${java.home.dir}/lib"/> <!-- new default -->
</target>
<target name="gluegen.cpptasks.declare.compiler.linux.s390x" if="isLinuxs390x">
<echo message="Linux.s390x" />
<property name="compiler.cfg.id.base" value="compiler.cfg.linux" />
<property name="linker.cfg.id.base" value="linker.cfg.linux" />
- <property name="java.lib.dir.platform" value="${java.home.dir}/jre/lib/s390x" />
+ <available property="java.lib.dir.platform" value="${java.home.dir}/jre/lib/s390x"
+ file="${java.home.dir}/jre/lib/s390x/libjava.so"/>
+ <available property="java.lib.dir.platform" value="${java.home.dir}/lib/s390x"
+ file="${java.home.dir}/lib/s390x/libjava.so"/>
+ <property name="java.lib.dir.platform" value="${java.home.dir}/lib"/> <!-- new default -->
</target>
<target name="gluegen.cpptasks.declare.compiler.linux.sparc" if="isLinuxSparc">
<echo message="Linux.Sparc" />
<property name="compiler.cfg.id.base" value="compiler.cfg.linux" />
<property name="linker.cfg.id.base" value="linker.cfg.linux" />
- <property name="java.lib.dir.platform" value="${java.home.dir}/jre/lib/sparc" />
+ <available property="java.lib.dir.platform" value="${java.home.dir}/jre/lib/sparc"
+ file="${java.home.dir}/jre/lib/sparc/libjava.so"/>
+ <available property="java.lib.dir.platform" value="${java.home.dir}/lib/sparc"
+ file="${java.home.dir}/lib/sparc/libjava.so"/>
+ <property name="java.lib.dir.platform" value="${java.home.dir}/lib"/> <!-- new default -->
</target>
- <target name="gluegen.cpptasks.declare.compiler.linux" depends="gluegen.cpptasks.declare.compiler.linux.x86,gluegen.cpptasks.declare.compiler.linux.amd64,gluegen.cpptasks.declare.compiler.linux.ia64,gluegen.cpptasks.declare.compiler.linux.armv6,gluegen.cpptasks.declare.compiler.linux.alpha,gluegen.cpptasks.declare.compiler.linux.hppa,gluegen.cpptasks.declare.compiler.linux.mips,gluegen.cpptasks.declare.compiler.linux.mipsel,gluegen.cpptasks.declare.compiler.linux.ppc,gluegen.cpptasks.declare.compiler.linux.s390,gluegen.cpptasks.declare.compiler.linux.s390x,gluegen.cpptasks.declare.compiler.linux.sparc" if="isLinux">
- <property name="java.includes.dir.platform" value="${java.includes.dir}/linux" />
+ <target name="gluegen.cpptasks.declare.compiler.linux" depends="gluegen.cpptasks.declare.compiler.linux.x86,gluegen.cpptasks.declare.compiler.linux.amd64,gluegen.cpptasks.declare.compiler.linux.ia64,gluegen.cpptasks.declare.compiler.linux.armv6,gluegen.cpptasks.declare.compiler.linux.aarch64,gluegen.cpptasks.declare.compiler.linux.alpha,gluegen.cpptasks.declare.compiler.linux.hppa,gluegen.cpptasks.declare.compiler.linux.mips,gluegen.cpptasks.declare.compiler.linux.mipsel,gluegen.cpptasks.declare.compiler.linux.ppc,gluegen.cpptasks.declare.compiler.linux.ppc64,gluegen.cpptasks.declare.compiler.linux.ppc64le,gluegen.cpptasks.declare.compiler.linux.riscv64,gluegen.cpptasks.declare.compiler.linux.s390,gluegen.cpptasks.declare.compiler.linux.s390x,gluegen.cpptasks.declare.compiler.linux.sparc" if="isLinux">
+ <property name="java.includes.dir.platform" value="${java.includes.dir}/x11" />
</target>
<target name="gluegen.cpptasks.declare.compiler.solaris32" if="isSolaris32Bit">
@@ -1469,63 +1801,87 @@
</target>
<target name="gluegen.cpptasks.declare.compiler.solaris" depends="gluegen.cpptasks.declare.compiler.solaris32,gluegen.cpptasks.declare.compiler.solaris.sparcv9,gluegen.cpptasks.declare.compiler.solaris.amd64" if="isSolaris">
- <property name="java.includes.dir.platform" value="${java.includes.dir}/solaris" />
- <property name="java.lib.dir.platform" value="${java.home.dir}/jre/lib/${solaris.cpu}" />
+ <property name="java.includes.dir.platform" value="${java.includes.dir}/x11" />
+ <available property="java.lib.dir.platform" value="${java.home.dir}/jre/lib/${solaris.cpu}"
+ file="${java.home.dir}/jre/lib/${solaris.cpu}/libjava.so"/>
+ <available property="java.lib.dir.platform" value="${java.home.dir}/lib/${solaris.cpu}"
+ file="${java.home.dir}/lib/${solaris.cpu}/libjava.so"/>
+ <property name="java.lib.dir.platform" value="${java.home.dir}/lib"/> <!-- new default -->
</target>
<target name="gluegen.cpptasks.declare.compiler.macosx" if="isOSX">
<echo message="MacOSX" />
<property name="compiler.cfg.id.base" value="compiler.cfg.macosx" />
<property name="linker.cfg.id.base" value="linker.cfg.macosx" />
- <!-- Java7 std location -->
- <!-- Temporary workaround:
- Provided darwin/jawt_md.h from Oracle for OSX / Java7
- has X11 dependencies and does not define JAWT_SurfaceLayers.
- value="${java.includes.dir}/darwin">
- -->
- <condition property="java.includes.dir.platform"
- value="${gluegen.root.abs-path}/make/stub_includes/jni/macosx">
- <available file="${java.includes.dir}/darwin/jawt_md.h"/>
- </condition>
- <condition property="java.lib.dir.platform"
- value="${java.home.dir}/jre/lib">
- <available file="${java.home.dir}/jre/lib/libjawt.dylib"/>
- </condition>
- <!-- Fallback value Java6 -->
- <property name="java.includes.dir.platform" value="/System/Library/Frameworks/JavaVM.framework/Headers" />
- <property name="java.lib.dir.platform" value="/System/Library/Frameworks/JavaVM.framework/Libraries" />
- <echo message="java.includes.dir.platform ${java.includes.dir.platform}" />
- <echo message="java.lib.dir.platform ${java.lib.dir.platform}" />
+ <property name="java.includes.dir.platform" value="${java.includes.dir}/macosx" />
+ <available property="java.lib.dir.platform" value="${java.home.dir}/jre/lib"
+ file="${java.home.dir}/jre/lib/libjava.so"/>
+ <property name="java.lib.dir.platform" value="${java.home.dir}/lib"/> <!-- new default -->
+ </target>
+
+ <target name="gluegen.cpptasks.declare.compiler.ios.amd64" if="isIOSAmd64">
+ <echo message="iOSAmd64" />
+ <property name="compiler.cfg.id.base" value="compiler.cfg.ios.amd64" />
+ <property name="linker.cfg.id.base" value="linker.cfg.ios.amd64" />
+ <property name="java.includes.dir.platform" value="${java.includes.dir}/macosx" />
+ <available property="java.lib.dir.platform" value="${java.home.dir}/jre/lib"
+ file="${java.home.dir}/jre/lib/libjava.a"/>
+ <property name="java.lib.dir.platform" value="${java.home.dir}/lib"/> <!-- new default -->
+ </target>
+
+ <target name="gluegen.cpptasks.declare.compiler.ios.arm64" if="isIOSArm64">
+ <echo message="iOSArm64" />
+ <property name="compiler.cfg.id.base" value="compiler.cfg.ios.arm64" />
+ <property name="linker.cfg.id.base" value="linker.cfg.ios.arm64" />
+ <property name="java.includes.dir.platform" value="${java.includes.dir}/macosx" />
+ <available property="java.lib.dir.platform" value="${java.home.dir}/jre/lib"
+ file="${java.home.dir}/jre/lib/libjava.a"/>
+ <property name="java.lib.dir.platform" value="${java.home.dir}/lib"/> <!-- new default -->
</target>
<target name="gluegen.cpptasks.declare.compiler.freebsd.x86" if="isFreeBSDX86">
<echo message="FreeBSD" />
<property name="compiler.cfg.id.base" value="compiler.cfg.freebsd" />
<property name="linker.cfg.id.base" value="linker.cfg.freebsd.x86" />
- <property name="java.lib.dir.platform" value="${java.home.dir}/jre/lib/i386" />
+ <available property="java.lib.dir.platform" value="${java.home.dir}/jre/lib/i386"
+ file="${java.home.dir}/jre/lib/i386/libjava.so"/>
+ <available property="java.lib.dir.platform" value="${java.home.dir}/lib/i386"
+ file="${java.home.dir}/lib/i386/libjava.so"/>
+ <property name="java.lib.dir.platform" value="${java.home.dir}/lib"/> <!-- new default -->
</target>
<target name="gluegen.cpptasks.declare.compiler.freebsd.amd64" if="isFreeBSDAMD64">
<echo message="FreeBSD" />
<property name="compiler.cfg.id.base" value="compiler.cfg.freebsd" />
<property name="linker.cfg.id.base" value="linker.cfg.freebsd.amd64" />
- <property name="java.lib.dir.platform" value="${java.home.dir}/jre/lib/amd64" />
+ <available property="java.lib.dir.platform" value="${java.home.dir}/jre/lib/amd64"
+ file="${java.home.dir}/jre/lib/amd64/libjava.so"/>
+ <available property="java.lib.dir.platform" value="${java.home.dir}/lib/amd64"
+ file="${java.home.dir}/lib/amd64/libjava.so"/>
+ <property name="java.lib.dir.platform" value="${java.home.dir}/lib"/> <!-- new default -->
</target>
<target name="gluegen.cpptasks.declare.compiler.freebsd" depends="gluegen.cpptasks.declare.compiler.freebsd.x86,gluegen.cpptasks.declare.compiler.freebsd.amd64" if="isFreeBSD">
- <property name="java.includes.dir.platform" value="${java.includes.dir}/freebsd" />
+ <property name="java.includes.dir.platform" value="${java.includes.dir}/x11" />
</target>
<target name="gluegen.cpptasks.declare.compiler.hpux" if="isHPUX">
<echo message="HP-UX" />
<property name="compiler.cfg.id.base" value="compiler.cfg.hpux" />
<property name="linker.cfg.id.base" value="linker.cfg.hpux" />
- <property name="java.includes.dir.platform" value="${java.includes.dir}/hp-ux" />
- <property name="java.lib.dir.platform" value="${java.home.dir}/jre/lib/PA_RISC2.0" />
+ <property name="java.includes.dir.platform" value="${java.includes.dir}/x11" />
+ <available property="java.lib.dir.platform" value="${java.home.dir}/jre/lib/PA_RISC2.0"
+ file="${java.home.dir}/jre/lib/PA_RISC2.0/libjava.so"/>
+ <available property="java.lib.dir.platform" value="${java.home.dir}/lib/PA_RISC2.0"
+ file="${java.home.dir}/lib/PA_RISC2.0/libjava.so"/>
+ <property name="java.lib.dir.platform" value="${java.home.dir}/lib"/> <!-- new default -->
</target>
- <target name="gluegen.cpptasks.declare.compiler" depends="gluegen.cpptasks.declare.compiler.environment,gluegen.cpptasks.declare.compiler.win32,gluegen.cpptasks.declare.compiler.linux,gluegen.cpptasks.declare.compiler.solaris,gluegen.cpptasks.declare.compiler.macosx,gluegen.cpptasks.declare.compiler.freebsd,gluegen.cpptasks.declare.compiler.hpux" >
- <echo message="java.lib.dir.platform: ${java.lib.dir.platform}" />
+ <target name="gluegen.cpptasks.declare.compiler" depends="gluegen.cpptasks.declare.compiler.environment,gluegen.cpptasks.declare.compiler.win32,gluegen.cpptasks.declare.compiler.linux,gluegen.cpptasks.declare.compiler.solaris,gluegen.cpptasks.declare.compiler.macosx,gluegen.cpptasks.declare.compiler.ios.amd64,gluegen.cpptasks.declare.compiler.ios.arm64,gluegen.cpptasks.declare.compiler.freebsd,gluegen.cpptasks.declare.compiler.hpux" >
+ <echo message="java.home.dir ${java.home.dir}" />
+ <echo message="java.includes.dir ${java.includes.dir}" />
+ <echo message="java.includes.dir.platform ${java.includes.dir.platform}" />
+ <echo message="java.lib.dir.platform ${java.lib.dir.platform}" />
</target>
<target name="gluegen.cpptasks.setup.compiler" depends="gluegen.cpptasks.detect.compiler,gluegen.cpptasks.configure.compiler,gluegen.cpptasks.declare.compiler" />
@@ -1543,7 +1899,6 @@
<include name="**/*.so"/> <!-- unix -->
<include name="**/*.dll"/> <!-- windows -->
<include name="**/*.dylib"/> <!-- macosx -->
- <include name="**/*.jnilib"/> <!-- macosx -->
</fileset>
</apply>
</target>
@@ -1573,21 +1928,39 @@
<attribute name="excludelibs" default="" />
<sequential>
+ <echo message="native.tag.jar @{module} (attr) for @{nativejarfile} include @{includelibs} exclude @{excludelibs}"/>
<var name="nativejarfile.basename" unset="true"/>
<var name="nativejarfile.tmpdir" unset="true"/>
<var name="nativejarfile.tmpdir.natives" unset="true"/>
+ <var name="nativejarfile.includelibs" unset="true"/>
+ <var name="nativejarfile.excludelibs" unset="true"/>
<basename property="nativejarfile.basename" file="@{nativejarfile}"/>
<property name="nativejarfile.tmpdir" value="@{objdir}/${nativejarfile.basename}.d" />
<property name="nativejarfile.tmpdir.natives" value="${nativejarfile.tmpdir}/jar" />
<!-- In case we like to switch to a natives subfolder 'natives/${os.and.arch}' use the following -->
<!-- property name="nativejarfile.tmpdir.natives" value="${nativejarfile.tmpdir}/jar/natives/${os.and.arch}" /-->
+ <!-- enforce inclusion/exclusion of *.symbols depending on build.dynamiclibs -->
+ <condition property="nativejarfile.includelibs"
+ value="@{includelibs}"
+ else="@{includelibs} *.symbols">
+ <istrue value="${build.dynamiclibs}"/>
+ </condition>
+ <condition property="nativejarfile.excludelibs"
+ value="@{excludelibs} *.symbols"
+ else="@{excludelibs}">
+ <istrue value="${build.dynamiclibs}"/>
+ </condition>
+ <echo message="native.tag.jar @{module} (props) ${nativejarfile.basename} include ${nativejarfile.includelibs} exclude ${nativejarfile.excludelibs}"/>
+
<mkdir dir="${nativejarfile.tmpdir}/java" />
<mkdir dir="${nativejarfile.tmpdir.natives}" />
- <copy todir="${nativejarfile.tmpdir.natives}">
+ <mkdir dir="${nativejarfile.tmpdir.natives}/natives" />
+ <mkdir dir="${nativejarfile.tmpdir.natives}/natives/${os.and.arch}" />
+ <copy todir="${nativejarfile.tmpdir.natives}/natives/${os.and.arch}">
<fileset dir="@{objdir}"
- includes="@{includelibs}"
- excludes="@{excludelibs}"/>
+ includes="${nativejarfile.includelibs}"
+ excludes="${nativejarfile.excludelibs}"/>
</copy>
<echo message='package ${nativejartag.package}.@{module}.${os.and.arch.dot}; public final class TAG { }' file="${nativejarfile.tmpdir}/java/${nativejartag.prefix}/@{module}/${os.and.arch.slash}/TAG.java"/>
<javac destdir="${nativejarfile.tmpdir}/jar"
@@ -1609,4 +1982,23 @@
</delete>
</sequential>
</macrodef>
+
+ <macrodef name="gluegen.make.libsymbols">
+ <attribute name="builddir" />
+ <attribute name="nativelib" />
+ <attribute name="symbolsfile" />
+ <sequential>
+ <!-- invoke nm in a most compatible way, tested on GNU/Linux and MacOS -->
+ <exec executable="nm" dir="@{builddir}" output="@{symbolsfile}.raw">
+ <arg value="--extern-only"/>
+ <arg value="--defined-only"/>
+ <arg value="@{nativelib}"/>
+ </exec>
+ <exec executable="${awk_executable}" dir="@{builddir}" output="@{symbolsfile}">
+ <arg value="{ print $3 }"/>
+ <arg value="@{symbolsfile}.raw"/>
+ </exec>
+ <delete file="@{symbolsfile}.raw" quiet="true" failonerror="false" />
+ </sequential>
+ </macrodef>
</project>
diff --git a/make/gluegen-cpptasks-custom.xml b/make/gluegen-cpptasks-custom.xml
index c05033d..53c13c0 100644
--- a/make/gluegen-cpptasks-custom.xml
+++ b/make/gluegen-cpptasks-custom.xml
@@ -41,8 +41,12 @@
-->
<property name="compiler.cfg.id.base" value="compiler.cfg.linux" />
<property name="linker.cfg.id.base" value="linker.cfg.linux" />
- <property name="java.lib.dir.platform" value="${java.home.dir}/jre/lib/i386" />
<property name="java.includes.dir.platform" value="${java.includes.dir}/linux" />
+ <available property="java.lib.dir.platform" value="${java.home.dir}/jre/lib/i386"
+ file="${java.home.dir}/jre/lib/i386/libjava.so"/>
+ <available property="java.lib.dir.platform" value="${java.home.dir}/lib/i386"
+ file="${java.home.dir}/lib/i386/libjava.so"/>
+ <property name="java.lib.dir.platform" value="${java.home.dir}/lib"/> <!-- new default -->
</target>
</project>
diff --git a/make/gluegen-properties.xml b/make/gluegen-properties.xml
index 8038de3..2f061fc 100755
--- a/make/gluegen-properties.xml
+++ b/make/gluegen-properties.xml
@@ -57,10 +57,9 @@
<property name="ant-junit4.jar" value="${ant.home}/lib/ant-junit4.jar" />
<property name="semver.jar" value="${gluegen.root}/make/lib/semantic-versioning/semver.jar" />
- <property name="android.version" value="9" /> <!-- default - if not set by jogamp-env.xml:jogamp.env.init -->
- <property name="android-min.jar" value="${gluegen.root}/make/lib/android-sdk/${android.version}/android.jar" />
- <property name="android-015.jar" value="${gluegen.root}/make/lib/android-sdk/15/android.jar" />
- <property name="android.jar" value="${android-015.jar}" />
+ <property name="android.api.level" value="24" /> <!-- default - if not set by jogamp-env.xml:jogamp.env.init -->
+ <property name="android-min.jar" value="${gluegen.root}/make/lib/android-sdk/${android.api.level}/android.jar" />
+ <property name="android.jar" value="${android-min.jar}" />
<condition property="android-jars.available">
<and>
<available file="${android-min.jar}"/>
@@ -88,10 +87,16 @@
<!-- maybe overriden, e.g. with "clang" -->
<echo message="Setting default gcc.compat.compiler" />
<condition property="gcc.compat.compiler" value="xcode.clang"> <!-- default for OSX -->
- <and>
- <os family="mac"/>
- <os family="unix"/>
- </and>
+ <or>
+ <istrue value="${isOSX}"/>
+ <istrue value="${isIOS}"/>
+ <istrue value="${isIOSAmd64}"/>
+ <istrue value="${isIOSArm64}"/>
+ <and>
+ <os family="mac"/>
+ <os family="unix"/>
+ </and>
+ </or>
</condition>
<property name="gcc.compat.compiler" value="gcc"/> <!-- default for all others .. -->
<echo message="gcc.compat.compiler=${gcc.compat.compiler}" />
diff --git a/make/jogamp-androidtasks.xml b/make/jogamp-androidtasks.xml
index 30d8dc0..9236496 100644
--- a/make/jogamp-androidtasks.xml
+++ b/make/jogamp-androidtasks.xml
@@ -7,12 +7,28 @@
</classpath>
</taskdef>
+ <target name="test.regexp1" >
+ <property name="jarbasename" value="gluegen-rt-android" />
+ <propertyregex property="m.aapt.apkbasename0"
+ input="${jarbasename}"
+ regexp="(.*)(-android$)"
+ select="\1"
+ casesensitive="true" />
+ <condition property="m.aapt.apkbasename1" value="${m.aapt.apkbasename0}" else="${jarbasename}">
+ <not>
+ <equals arg1="${m.aapt.apkbasename0}" arg2="$${m.aapt.apkbasename0}" casesensitive="true" />
+ </not>
+ </condition>
+ <echo>val: ${jarbasename}</echo>
+ <echo>___: ${m.aapt.apkbasename0}</echo>
+ <echo>res: ${m.aapt.apkbasename1}</echo>
+ </target>
<!---
<aapt.signed
jarbuilddir="${build}" // jar build location
jarbasename="gluegen-rt" // jar base file name
nativebuilddir="${gluegen.lib.dir}" // native library build location
- nativebasename="gluegen-rt" // native library base file name "*${nativebasename}*.${native.library.suffix}"
+ nativebasename="${output.lib.name}" // native library base file name "*${nativebasename}*.${native.library.suffix}"
androidmanifest.path="resources/android/AndroidManifest.xml"
androidresources.path="resources/android/res"
jarmanifest.path="${build}/Manifest-rt.temp" // optional
@@ -49,29 +65,49 @@
<attribute name="keystore.alias" default="${android.keystore.alias}" />
<attribute name="keystore.storepass" default="${android.keystore.storepass}" />
<attribute name="keystore.keypass" default="${android.keystore.keypass}" />
+ <element name="d8-classpaths" implicit="no" optional="true" />
<sequential>
- <var name="m.aapt.android.abi.extstr" unset="true"/>
+ <var name="m.aapt.apkbasename0" unset="true"/>
+ <var name="m.aapt.apkbasename1" unset="true"/>
+ <var name="m.aapt.apkbasename" unset="true"/>
<var name="m.aapt.build.apk" unset="true"/>
<var name="m.aapt.dex.file" unset="true"/>
<var name="m.aapt.unsigned.package.file.name" unset="true"/>
<var name="m.aapt.signed.file.name" unset="true"/>
<var name="m.aapt.release.file.name" unset="true"/>
<var name="m.aapt.keystore.file" unset="true"/>
-
<var name="m.aapt.java.encoding" unset="true"/>
- <condition property="m.aapt.android.abi.extstr" value="-@{android.abi}" else="">
+ <!-- ${m.aapt.apkbasename}:
+ if ( @{android.abi} != 'generic' ) {
+ ${m.aapt.apkbasename} := ( @{jarbasename} - ( optional postfix '-android' ) ) + ${os.and.arch} ;
+ } else {
+ ${m.aapt.apkbasename} := @{jarbasename} ;
+ }
+ regexp="(.*((\Q\-android\E){0}))(\Q\-android\E)?"
+ -->
+ <propertyregex property="m.aapt.apkbasename0"
+ input="@{jarbasename}"
+ regexp="(.*)(-android$)"
+ select="\1"
+ casesensitive="true" />
+ <condition property="m.aapt.apkbasename1" value="${m.aapt.apkbasename0}" else="@{jarbasename}">
+ <not>
+ <equals arg1="${m.aapt.apkbasename0}" arg2="$${m.aapt.apkbasename0}" casesensitive="true" />
+ </not>
+ </condition>
+ <condition property="m.aapt.apkbasename" value="${m.aapt.apkbasename1}-${os.and.arch}" else="@{jarbasename}">
<not>
<equals arg1="@{android.abi}" arg2="generic" casesensitive="true" />
</not>
</condition>
- <property name="m.aapt.build.apk" value="@{jarbuilddir}/@{jarbasename}${m.aapt.android.abi.extstr}.apk.d" />
+ <property name="m.aapt.build.apk" value="@{jarbuilddir}/${m.aapt.apkbasename}.apk.d" />
<property name="m.aapt.dex.file" location="${m.aapt.build.apk}/image/classes.dex" />
- <property name="m.aapt.unsigned.package.file.name" value="@{jarbuilddir}/@{jarbasename}${m.aapt.android.abi.extstr}-unsigned.apk" />
- <property name="m.aapt.signed.file.name" value="${m.aapt.build.apk}/@{jarbasename}${m.aapt.android.abi.extstr}-signed-raw.apk" />
- <property name="m.aapt.release.file.name" value="@{jarbuilddir}/@{jarbasename}${m.aapt.android.abi.extstr}.apk" />
+ <property name="m.aapt.unsigned.package.file.name" value="@{jarbuilddir}/${m.aapt.apkbasename}-unsigned.apk" />
+ <property name="m.aapt.signed.file.name" value="${m.aapt.build.apk}/${m.aapt.apkbasename}-signed-raw.apk" />
+ <property name="m.aapt.release.file.name" value="@{jarbuilddir}/${m.aapt.apkbasename}.apk" />
<property name="m.aapt.java.encoding" value="UTF-8" />
@@ -105,7 +141,7 @@
<copy file="@{androidmanifest.path}" tofile="${m.aapt.build.apk}/image/AndroidManifest.xml"/>
<copy file="@{jarmanifest.path}" failonerror="false" tofile="${m.aapt.build.apk}/image/META-INF/MANIFEST.MF"/>
- <echo>aapt.signed @{jarbasename}: generating Android R.java from the resources...</echo>
+ <echo>aapt.signed ${m.aapt.apkbasename}: generating Android R.java from the resources...</echo>
<exec dir="." executable="aapt" logError="true" failonerror="true" failifexecutionfails="true">
<arg line="package"/>
<!-- arg line="-v"/ -->
@@ -121,8 +157,9 @@
<arg line="${m.aapt.build.apk}/temp/src"/>
</exec>
- <echo>aapt.signed @{jarbasename}: compiling R.java...</echo>
+ <echo>aapt.signed ${m.aapt.apkbasename}: compiling R.java...</echo>
<javac encoding="${m.aapt.java.encoding}"
+ includeAntRuntime="false"
source="${target.sourcelevel}"
target="${target.targetlevel}"
bootclasspath="${target.rt.jar}"
@@ -136,24 +173,37 @@
<pathelement path="${android.jar}"/>
</classpath>
</javac>
-
- <echo>aapt.signed @{jarbasename}: dex'ing</echo>
- <exec dir="." executable="dx" logError="true" failonerror="true" failifexecutionfails="true">
- <arg line="--dex"/>
- <arg line="--output=${m.aapt.dex.file}"/>
+ <zip destfile="${m.aapt.build.apk}/temp/classes.zip" level="0">
+ <fileset dir="${m.aapt.build.apk}/temp/classes"/>
+ </zip>
+
+ <echo>aapt.signed ${m.aapt.apkbasename}: dex'ing</echo>
+ <!-- exec dir="." executable="dx" logError="true" failonerror="true" failifexecutionfails="true">
+ <arg line="- -dex"/>
+ <arg line="- -output=${m.aapt.dex.file}"/>
+ <arg line="- -min-sdk-version=${android.api.level}"/>
<arg line="@{jarbuilddir}/@{jarbasename}.jar"/>
<arg line="${m.aapt.build.apk}/temp/classes"/>
+ </exec -->
+ <exec dir="." executable="d8" logError="true" failonerror="true" failifexecutionfails="true">
+ <arg line="--output ${m.aapt.build.apk}/image"/>
+
+ <arg line="--classpath ${android-min.jar}"/>
+ <arg line="--classpath ${target.rt.jar}"/>
+ <d8-classpaths/>
+
+ <arg line="--min-api ${android.api.level}"/>
+
+ <!-- arg line="- -no-desugaring"/ -->
+
+ <arg line="--release"/>
+ <!-- arg line="- -debug"/ -->
+
+ <arg line="@{jarbuilddir}/@{jarbasename}.jar"/>
+ <arg line="${m.aapt.build.apk}/temp/classes.zip"/>
</exec>
- <path id="android.antlibs">
- <pathelement path="${env.ANDROID_HOME}/tools/lib/anttasks.jar" />
- <pathelement path="${env.ANDROID_HOME}/tools/lib/sdklib.jar" />
- <pathelement path="${env.ANDROID_HOME}/tools/lib/androidprefs.jar" />
- <pathelement path="${env.ANDROID_HOME}/tools/lib/apkbuilder.jar" />
- <pathelement path="${env.ANDROID_HOME}/tools/lib/jarutils.jar" />
- </path>
-
- <echo>aapt.signed @{jarbasename}: packaging</echo>
+ <echo>aapt.signed ${m.aapt.apkbasename}: packaging</echo>
<exec dir="." executable="aapt" logError="true" failonerror="true" failifexecutionfails="true">
<arg line="package"/>
<!--arg line="-v"/-->
@@ -182,17 +232,19 @@
<arg line="${m.aapt.build.apk}/image/"/>
</exec>
- <echo>aapt.signed @{jarbasename}: gen temp keystore @{keystore.alias} @ ${m.aapt.build.apk}/debug.keystore</echo>
+ <echo>aapt.signed ${m.aapt.apkbasename}: gen temp keystore @{keystore.alias} @ ${m.aapt.build.apk}/debug.keystore</echo>
<exec dir="." executable="keytool" failonerror="true">
<arg value="-genkey"/>
<!-- Be Java6 keytool/jarsigner compatible, and hence Android compatible -->
<arg value="-sigalg"/>
- <arg value="MD5withRSA"/>
+ <arg value="SHA256withRSA"/>
<arg value="-keyalg"/>
<arg value="RSA"/>
<arg value="-keysize"/>
- <arg value="1024"/>
+ <arg value="2048"/>
+ <arg value="-validity"/>
+ <arg value="365"/>
<arg value="-keystore" />
<arg value="${m.aapt.build.apk}/debug.keystore" />
@@ -211,10 +263,10 @@
</exec>
<!-- Be Java6 keytool/jarsigner compatible, and hence Android compatible -->
- <echo>aapt.signed @{jarbasename}: signing w/ key @{keystore.alias} @ ${m.aapt.keystore.file}</echo>
+ <echo>aapt.signed ${m.aapt.apkbasename}: signing w/ key @{keystore.alias} @ ${m.aapt.keystore.file}</echo>
<!-- signjar
- sigalg="MD5withRSA"
- digestalg="SHA1"
+ sigalg="SHA256withRSA"
+ digestalg="SHA256"
jar="${m.aapt.unsigned.package.file.name}"
signedjar="${m.aapt.signed.file.name}"
keystore="${m.aapt.keystore.file}"
@@ -226,9 +278,9 @@
<exec dir="." executable="jarsigner" failonerror="true">
<!-- Be Java6 keytool/jarsigner compatible, and hence Android compatible -->
<arg value="-sigalg"/>
- <arg value="MD5withRSA"/>
+ <arg value="SHA256withRSA"/>
<arg value="-digestalg"/>
- <arg value="SHA1"/>
+ <arg value="SHA256"/>
<arg value="-keystore" />
<arg value="${m.aapt.keystore.file}" />
@@ -246,8 +298,8 @@
<arg value="@{keystore.alias}" />
</exec>
- <echo>aapt.signed @{jarbasename}: zip aligning</echo>
- <exec dir="." executable="${env.ANDROID_HOME}/tools/zipalign" failonerror="true">
+ <echo>aapt.signed ${m.aapt.apkbasename}: zip aligning</echo>
+ <exec dir="." executable="zipalign" failonerror="true">
<arg line="-v" />
<arg value="-f" />
<arg value="4" />
diff --git a/make/jogamp-env.xml b/make/jogamp-env.xml
index b70f129..0167cbd 100755
--- a/make/jogamp-env.xml
+++ b/make/jogamp-env.xml
@@ -1,22 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Current minimum requirements are:
- - Java 1.6 (Level 6.0)
- - Android SDK API Level 9 (Version 2.3 Gingerbread)
-
- Official production builds are performed w/ Java 1.6.
- - Java 1.6 (Level 6.0)
- - Android SDK API Level 9 (Version 2.3 Gingerbread)
-
- Android supports Java language level 6.0.
- Nevertheless, it cannot be guaranteed whether the Android API
- supports all classes and methods of Java 1.6.
- It is required for JogAmp developers to validate Android compatibility
- by an Android crosscompilation build.
-
- Current GlueGen code utilizes some minor Java 1.6 features
- which could be replaced, however it's not desired at this point
- since we have no mode hard Java 1.5 constraints.
+<!-- Current runtime requirements are:
+ - Java 1.8 (Level 8.0)
+ - Android SDK API level 24 (Version 7.0 Nougat, released August 2016)
+
+ Official production builds are performed _for_ Java 1.8.
+ - Java 1.8 (Level 8.0)
+ - Android SDK API level 24 (Version 7.0 Nougat, released August 2016)
+
+ Official production builds are performed _on_ OpenJDK 11 or 17
+ and a Java JDK 11 or greater is required!
+
+ Target Java 8 baseline is chosen today, June 2019,
+ since OpenJDK 1.8 is well supported on desktop,
+ mobile support is given w/ OpenJDK 9 and
+ Android also support these language features for almost 3 years.
+
+ +++
+
+ Android 7.0 Nougat, API level 24 supports Java 1.8,
+ see <https://developer.android.com/studio/write/java8-support>.
+
+ However, we need to set the APK's manifest SDK min version to 21 (Android 5)
+ and target version to 28 (Android 9), as required as of 2019-08-01
+ <https://support.google.com/googleplay/android-developer/answer/113469#targetsdk>
+
+ <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28"/>
+
+ Due to certain libc compatibility issues of Android API > 22,
+ we compile certain native libraries @ API 22,
+ see <https://github.com/android/ndk/issues/964>.
+ One example is OpenAL-Soft.
+
+ It is strongly recommended to test with the x86 emulator
+ using the latest API level.
+ On 2019-12-25 we have tested using Android 10, API 29 on the x86 emulator.
+
+ Further testing should be performed from Android 5, API 21, to Android 9, API 28,
+ as well as on aarch64 and armv7a devices.
+
+ +++
+
+ For crosscompilation the following shall be set:
+ - TARGET_PLATFORM_SYSROOT Crosscompiler and system specified 'sysroot' (as in gcc \-\-print-sysroot)
+ - TARGET_PLATFORM_USRROOT Additional optional user headers and libraries for target
+ - TARGET_PLATFORM_USRLIBS Actual location of target user libraries within TARGET_PLATFORM_USRROOT
+ - TARGET_JAVA_LIBS Actual location of the Java libraries within TARGET_PLATFORM_USRROOT
-->
<project name="jogamp-env" basedir=".">
@@ -30,12 +59,12 @@
<property name="jvmJava.exe" value="${java.home}/bin/java" /> <!-- the java jvm executable for unit tests -->
<echo message="jvmJava.exe ${jvmJava.exe}"/>
- <condition property="jvmJava7.exe" value="${env.JAVA7_EXE}">
+ <condition property="jvmJava8.exe" value="${env.JAVA8_EXE}">
<not>
- <equals arg1="${env.JAVA7_EXE}" arg2="$${env.JAVA7_EXE}" casesensitive="true" />
+ <equals arg1="${env.JAVA8_EXE}" arg2="$${env.JAVA8_EXE}" casesensitive="true" />
</not>
</condition>
- <echo message="jvmJava7.exe ${jvmJava7.exe}"/> <!-- optional extra Java7 JVM for unit tests -->
+ <echo message="jvmJava8.exe ${jvmJava8.exe}"/> <!-- optional extra Java8 JVM for unit tests -->
<fail message="Please build using Ant 1.8.0 or higher.">
<condition>
@@ -45,16 +74,65 @@
</condition>
</fail>
- <fail message="Unsupported Java version: ${ant.java.version}. Make sure that the version of the Java compiler is 1.6 (6.0) or greater.">
+ <condition property="minJava21" value="true">
+ <or>
+ <equals arg1="${ant.java.version}" arg2="21"/>
+ <equals arg1="${ant.java.version}" arg2="22"/>
+ <equals arg1="${ant.java.version}" arg2="23"/>
+ <equals arg1="${ant.java.version}" arg2="24"/>
+ <equals arg1="${ant.java.version}" arg2="25"/>
+ <equals arg1="${ant.java.version}" arg2="26"/>
+ <equals arg1="${ant.java.version}" arg2="27"/>
+ <equals arg1="${ant.java.version}" arg2="28"/>
+ </or>
+ </condition>
+ <echo message="minJava21 ${minJava21}"/>
+
+ <condition property="minJava17" value="true">
+ <or>
+ <equals arg1="${ant.java.version}" arg2="17"/>
+ <equals arg1="${ant.java.version}" arg2="18"/>
+ <equals arg1="${ant.java.version}" arg2="19"/>
+ <equals arg1="${ant.java.version}" arg2="20"/>
+ <istrue value="${minJava21}"/>
+ </or>
+ </condition>
+ <echo message="minJava17 ${minJava17}"/>
+
+ <condition property="minJava11" value="true">
+ <or>
+ <equals arg1="${ant.java.version}" arg2="11"/>
+ <equals arg1="${ant.java.version}" arg2="12"/>
+ <equals arg1="${ant.java.version}" arg2="13"/>
+ <equals arg1="${ant.java.version}" arg2="14"/>
+ <equals arg1="${ant.java.version}" arg2="15"/>
+ <equals arg1="${ant.java.version}" arg2="16"/>
+ <istrue value="${minJava17}"/>
+ </or>
+ </condition>
+ <echo message="minJava11 ${minJava11}"/>
+
+ <condition property="minJava9" value="true">
+ <or>
+ <equals arg1="${ant.java.version}" arg2="9"/>
+ <istrue value="${minJava11}"/>
+ </or>
+ </condition>
+ <echo message="minJava9 ${minJava9}"/>
+
+ <condition property="minJava8" value="true">
+ <or>
+ <equals arg1="${ant.java.version}" arg2="1.8"/>
+ <istrue value="${minJava9}"/>
+ </or>
+ </condition>
+ <echo message="minJava8 ${minJava8}"/>
+
+ <!-- Only for junit runtime tests Java [8-10] is allowed, for building Java 11 is required. -->
+ <fail message="Unsupported Java version: ${ant.java.version}. Make sure that the version of Java is 1.8 or greater.">
<condition>
<not>
- <or>
- <contains string="${ant.java.version}" substring="1.6" casesensitive="false" />
- <contains string="${ant.java.version}" substring="1.7" casesensitive="false" />
- <contains string="${ant.java.version}" substring="1.8" casesensitive="false" />
- <contains string="${ant.java.version}" substring="1.9" casesensitive="false" />
- <contains string="${ant.java.version}" substring="2.0" casesensitive="false" />
- </or>
+ <istrue value="${minJava8}"/>
</not>
</condition>
</fail>
@@ -68,6 +146,11 @@
<format property="version.timestamp" pattern="yyyyMMdd"/>
</tstamp>
+ <condition property="javadoc.xarg1" value="-Xdoclint:none" else="-J-Ddummy=val">
+ <istrue value="${minJava8}"/>
+ </condition>
+ <echo message="javadoc.xarg1 ${javadoc.xarg1}"/>
+
<condition property="jogamp.jar.codebase" value="${env.JOGAMP_JAR_CODEBASE}">
<not>
<equals arg1="${env.JOGAMP_JAR_CODEBASE}" arg2="$${env.JOGAMP_JAR_CODEBASE}" casesensitive="true" />
@@ -77,8 +160,8 @@
<echo message="jogamp.jar.codebase ${jogamp.jar.codebase}"/>
<property name="jogamp.version.major" value="2"/>
- <property name="jogamp.version.minor" value="2"/>
- <property name="jogamp.version.submi" value="1"/>
+ <property name="jogamp.version.minor" value="6"/>
+ <property name="jogamp.version.submi" value="0"/>
<property name="jogamp.version.devel" value="-rc-${version.timestamp}"/> <!-- Devel RC Tag -->
<!-- property name="jogamp.version.devel" value=""/ --> <!-- Release tag -->
<property name="jogamp.version.base" value="${jogamp.version.major}.${jogamp.version.minor}"/>
@@ -86,7 +169,7 @@
<echo message="jogamp.version ${jogamp.version}"/>
<!-- This is the Android version: xxyyzzz, xx=API yy screen-from-to zzz app-version-->
- <property name="jogamp.version.int" value="0914019"/>
+ <property name="jogamp.version.int" value="2414020"/>
<echo message="jogamp.version.int ${jogamp.version.int}"/>
<!-- only set 'junit.is.disabled' if set in environment as 'true' to disable JUNIT tests -->
@@ -119,9 +202,9 @@
</not>
</condition>
- <condition property="android.version" value="${env.ANDROID_VERSION}" else="9">
+ <condition property="android.api.level" value="${env.ANDROID_API_LEVEL}" else="24">
<not>
- <equals arg1="${env.ANDROID_VERSION}" arg2="$${env.ANDROID_VERSION}" casesensitive="true" />
+ <equals arg1="${env.ANDROID_API_LEVEL}" arg2="$${env.ANDROID_API_LEVEL}" casesensitive="true" />
</not>
</condition>
@@ -137,109 +220,69 @@
</not>
</condition>
+ <condition property="target.releaselevel" value="${env.RELEASE_LEVEL}">
+ <not>
+ <equals arg1="${env.RELEASE_LEVEL}" arg2="$${env.RELEASE_LEVEL}" casesensitive="true" />
+ </not>
+ </condition>
+
<condition property="target.rt.jar" value="${env.TARGET_RT_JAR}">
<not>
<equals arg1="${env.TARGET_RT_JAR}" arg2="$${env.TARGET_RT_JAR}" casesensitive="true" />
</not>
</condition>
- <fail message="You need to specify all properties 'target.sourcelevel', 'target.targetlevel' and 'target.rt.jar' or none at all.">
- <condition>
- <and>
- <or>
- <isset property="target.sourcelevel"/>
- <isset property="target.targetlevel"/>
- <isset property="target.rt.jar"/>
- </or>
- <not>
- <and>
- <isset property="target.sourcelevel"/>
- <isset property="target.targetlevel"/>
- <isset property="target.rt.jar"/>
- </and>
- </not>
- </and>
- </condition>
- </fail>
-
<condition property="target.user.set" value="true">
<and>
<isset property="target.sourcelevel"/>
<isset property="target.targetlevel"/>
+ <!-- isset property="target.releaselevel"/ -->
<isset property="target.rt.jar"/>
</and>
</condition>
-
- <property name="target.sourcelevel" value="${ant.java.version}" /> <!-- default fallback values -->
- <property name="target.targetlevel" value="${ant.java.version}" /> <!-- default fallback values -->
- <!-- Default value for std Java (incl. Java7 on OS X) -->
- <condition property="target.rt.jar"
- value="${java.home}/lib/rt.jar">
- <available file="${java.home}/lib/rt.jar"/>
- </condition>
- <!-- Default fallback value for Java6 OS X -->
- <condition property="target.rt.jar"
- value="${java.home}/../Classes/classes.jar">
- <available file="${java.home}/../Classes/classes.jar"/>
- </condition>
- <!-- Default fallback value on std Java -->
<echo message="target.user.set ${target.user.set}"/>
<echo message="target.sourcelevel ${target.sourcelevel}"/>
<echo message="target.targetlevel ${target.targetlevel}"/>
+ <echo message="target.releaselevel ${target.releaselevel}"/>
<echo message="target.rt.jar ${target.rt.jar}"/>
- <fail message="No target.rt.jar specified not found.">
- <condition>
- <not>
- <isset property="target.rt.jar"/>
- </not>
- </condition>
- </fail>
- <property name="host.sourcelevel" value="${ant.java.version}" /> <!-- default values for compile time components -->
- <property name="host.targetlevel" value="${ant.java.version}" /> <!-- default values for compile time components -->
- <!-- Default value for std Java (incl. Java7 on OS X) -->
- <condition property="host.rt.jar"
- value="${java.home}/lib/rt.jar">
- <available file="${java.home}/lib/rt.jar"/>
- </condition>
- <!-- Default fallback value for Java6 OS X -->
- <condition property="host.rt.jar"
- value="${java.home}/../Classes/classes.jar">
- <available file="${java.home}/../Classes/classes.jar"/>
- </condition>
- <echo message="host.sourcelevel ${host.sourcelevel}"/>
- <echo message="host.targetlevel ${host.targetlevel}"/>
- <echo message="host.rt.jar ${host.rt.jar}"/>
- <fail message="No host.rt.jar specified not found.">
+ <fail message="You need to specify all properties 'target.sourcelevel', 'target.targetlevel' and 'target.rt.jar'.">
<condition>
<not>
- <isset property="host.rt.jar"/>
+ <istrue value="${target.user.set}"/>
</not>
</condition>
</fail>
- <fail message="Unsupported Target Java version (sourcelevel): ${target.sourcelevel}. Make sure that the version of the Java compiler is 1.6 (6.0) or greater.">
+ <fail message="Unsupported Target Java sourcelevel: ${target.sourcelevel}. Make sure that the sourcelevel is set to 1.8 (8.0).">
<condition>
<not>
<or>
- <contains string="${target.sourcelevel}" substring="1.6" casesensitive="false" />
- <contains string="${target.sourcelevel}" substring="1.7" casesensitive="false" />
<contains string="${target.sourcelevel}" substring="1.8" casesensitive="false" />
+ <contains string="${target.sourcelevel}" substring="8" casesensitive="false" />
</or>
</not>
</condition>
</fail>
- <fail message="Unsupported Target Java version (targetlevel): ${target.targetlevel}. Make sure that the version of the Java compiler is 1.6 (6.0) or greater.">
+ <fail message="Unsupported Target Java targetlevel: ${target.targetlevel}. Make sure that the targetlevel is set to 1.8 (8.0).">
<condition>
<not>
<or>
- <contains string="${target.targetlevel}" substring="1.6" casesensitive="false" />
- <contains string="${target.targetlevel}" substring="1.7" casesensitive="false" />
<contains string="${target.targetlevel}" substring="1.8" casesensitive="false" />
+ <contains string="${target.targetlevel}" substring="8" casesensitive="false" />
</or>
</not>
</condition>
</fail>
+ <!-- fail message="Unsupported Target Java releaselevel: ${target.releaselevel}. Make sure that the releaselevel is set to 8.">
+ <condition>
+ <not>
+ <or>
+ <contains string="${target.releaselevel}" substring="8" casesensitive="false" />
+ </or>
+ </not>
+ </condition>
+ </fail -->
<property name="javacdebug" value="true" />
<property name="javacdebuglevel" value="source,lines" />
@@ -254,7 +297,7 @@
<echo message="build.archiveon ${build.archiveon}"/>
<echo message="build.node.name ${build.node.name}"/>
- <echo message="android.version ${android.version}"/>
+ <echo message="android.api.level ${android.api.level}"/>
<echo message="junit.run.arg0 ${junit.run.arg0}"/>
<echo message="junit.run.arg1 ${junit.run.arg1}"/>
@@ -266,6 +309,30 @@
</condition>
<echo message="macosx.sdkroot ${macosx.sdkroot}"/>
+ <condition property="TARGET_PLATFORM_SYSROOT" value="${env.TARGET_PLATFORM_SYSROOT}">
+ <not>
+ <equals arg1="${env.TARGET_PLATFORM_SYSROOT}" arg2="$${env.TARGET_PLATFORM_SYSROOT}" casesensitive="true" />
+ </not>
+ </condition>
+ <condition property="TARGET_PLATFORM_USRROOT" value="${env.TARGET_PLATFORM_USRROOT}">
+ <not>
+ <equals arg1="${env.TARGET_PLATFORM_USRROOT}" arg2="$${env.TARGET_PLATFORM_USRROOT}" casesensitive="true" />
+ </not>
+ </condition>
+ <condition property="TARGET_PLATFORM_USRLIBS" value="${env.TARGET_PLATFORM_USRLIBS}">
+ <not>
+ <equals arg1="${env.TARGET_PLATFORM_USRLIBS}" arg2="$${env.TARGET_PLATFORM_USRLIBS}" casesensitive="true" />
+ </not>
+ </condition>
+ <condition property="TARGET_JAVA_LIBS" value="${env.TARGET_JAVA_LIBS}">
+ <not>
+ <equals arg1="${env.TARGET_JAVA_LIBS}" arg2="$${env.TARGET_JAVA_LIBS}" casesensitive="true" />
+ </not>
+ </condition>
+ <echo message='TARGET_PLATFORM_SYSROOT ${TARGET_PLATFORM_SYSROOT}'/>
+ <echo message='TARGET_PLATFORM_USRROOT ${TARGET_PLATFORM_USRROOT}'/>
+ <echo message='TARGET_PLATFORM_USRLIBS ${TARGET_PLATFORM_USRLIBS}'/>
+ <echo message='TARGET_JAVA_LIBS ${TARGET_JAVA_LIBS}'/>
</target>
</project>
diff --git a/make/jogamp-fat-test.mf b/make/jogamp-fat-test.mf
new file mode 100644
index 0000000..43c73df
--- /dev/null
+++ b/make/jogamp-fat-test.mf
@@ -0,0 +1,20 @@
+Manifest-Version: 1.0
+Application-Name: JogAmp Java Bindings Test
+Specification-Title: JogAmp Java Bindings Specification Test
+Specification-Version: @BASEVERSION@
+Specification-Vendor: JogAmp Community
+Implementation-Title: JogAmp Java Bindings Fat Test Jar
+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
+Implementation-Vendor-Id: com.jogamp
+Main-Class: com.jogamp.opengl.test.junit.jogl.demos.es2.newt.TestGearsES2SimpleNEWT
+Class-Path: jogamp-fat.jar
+Permissions: sandbox
+Application-Library-Allowable-Codebase: *
+@JAR_CODEBASE_TAG@
+
diff --git a/make/jogamp-fat.mf b/make/jogamp-fat.mf
new file mode 100644
index 0000000..1598bb2
--- /dev/null
+++ b/make/jogamp-fat.mf
@@ -0,0 +1,26 @@
+Manifest-Version: 1.0
+Application-Name: JogAmp Java Bindings
+Specification-Title: JogAmp Java Bindings Specification
+Specification-Version: @BASEVERSION@
+Specification-Vendor: JogAmp Community
+Implementation-Title: JogAmp Java Bindings Fat Jar
+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
+Implementation-Vendor-Id: com.jogamp
+Main-Class: com.jogamp.newt.opengl.GLWindow
+Trusted-Library: true
+Permissions: all-permissions
+Application-Library-Allowable-Codebase: *
+@JAR_CODEBASE_TAG@
+
+Name: jogamp/common/
+Sealed: true
+
+Name: com/jogamp/common/
+Sealed: true
+
diff --git a/make/lib/android-sdk/15/android-java-src.zip b/make/lib/android-sdk/15/android-java-src.zip
deleted file mode 100644
index ee37c7a..0000000
--- a/make/lib/android-sdk/15/android-java-src.zip
+++ /dev/null
Binary files differ
diff --git a/make/lib/android-sdk/15/LICENSE.txt b/make/lib/android-sdk/24/LICENSE.txt
index c817537..b227731 100644
--- a/make/lib/android-sdk/15/LICENSE.txt
+++ b/make/lib/android-sdk/24/LICENSE.txt
@@ -8,3 +8,7 @@ Google oversees the development of the core Android open-source platform, and wo
+++
See file NOTICE.txt in this folder !
+
++++
+
+Also see https://source.android.com/setup/start/licenses
diff --git a/make/lib/android-sdk/15/NOTICE.txt b/make/lib/android-sdk/24/NOTICE.txt
index 1fdb31d..1fdb31d 100644
--- a/make/lib/android-sdk/15/NOTICE.txt
+++ b/make/lib/android-sdk/24/NOTICE.txt
diff --git a/make/lib/android-sdk/15/android-java-src.txt b/make/lib/android-sdk/24/android-java-src.txt
index d3d6103..f4a9033 100644
--- a/make/lib/android-sdk/15/android-java-src.txt
+++ b/make/lib/android-sdk/24/android-java-src.txt
@@ -2,7 +2,7 @@ Retrieved from public sources as described in script below.
++++
-cd /android-sdk-linux_x86/sources/android-15
+cd /android-sdk-linux_x86/sources/android-24
jar cvf android-java-src.zip android com javax/microedition/khronos
diff --git a/make/lib/android-sdk/15/android.jar b/make/lib/android-sdk/24/android-java-src.zip
index efbb7a3..a8d38e9 100644
--- a/make/lib/android-sdk/15/android.jar
+++ b/make/lib/android-sdk/24/android-java-src.zip
Binary files differ
diff --git a/make/lib/android-sdk/24/android.jar b/make/lib/android-sdk/24/android.jar
new file mode 100644
index 0000000..05855c9
--- /dev/null
+++ b/make/lib/android-sdk/24/android.jar
Binary files differ
diff --git a/make/lib/android-sdk/9/LICENSE.txt b/make/lib/android-sdk/9/LICENSE.txt
deleted file mode 100644
index c817537..0000000
--- a/make/lib/android-sdk/9/LICENSE.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-
-http://source.android.com/faqs.html#what-kind-of-open-source-project-is-android
-
-What kind of open-source project is Android?
-
-Google oversees the development of the core Android open-source platform, and works to create robust developer and user communities. For the most part the Android source code is licensed under the permissive Apache Software License 2.0, rather than a "copyleft" license. The main reason for this is because our most important goal is widespread adoption of the software, and we believe that the ASL2.0 license best achieves that goal.
-
-+++
-
-See file NOTICE.txt in this folder !
diff --git a/make/lib/android-sdk/9/NOTICE.txt b/make/lib/android-sdk/9/NOTICE.txt
deleted file mode 100644
index 1fdb31d..0000000
--- a/make/lib/android-sdk/9/NOTICE.txt
+++ /dev/null
@@ -1,195 +0,0 @@
-Notice for all the files in this folder.
-------------------------------------------------------------
-
-
-
- Copyright (c) 2005-2008, The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
-
diff --git a/make/lib/android-sdk/9/android-java-src.txt b/make/lib/android-sdk/9/android-java-src.txt
deleted file mode 100644
index da7d9fb..0000000
--- a/make/lib/android-sdk/9/android-java-src.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-Retrieved from public sources as described in script below.
-
-++++
-
-#! bin/sh
-
-git clone git://git.source.android.com/platform/frameworks/base android-api
-cd android-api/
-git checkout gingerbread-release
-
-zipfile=./android-java-src.zip
-
-rm -f $zipfile
-
-jar cvf $zipfile -C core/java .
-
-for i in `find . -maxdepth 2 -name java` ; do
- if [ "$i" != "core/java" ] ; then
- jar uvf $zipfile -C $i .
- fi
-done
-
diff --git a/make/lib/android-sdk/9/android-java-src.zip b/make/lib/android-sdk/9/android-java-src.zip
deleted file mode 100644
index 59e4979..0000000
--- a/make/lib/android-sdk/9/android-java-src.zip
+++ /dev/null
Binary files differ
diff --git a/make/lib/android-sdk/9/android.jar b/make/lib/android-sdk/9/android.jar
deleted file mode 100644
index 7729ac2..0000000
--- a/make/lib/android-sdk/9/android.jar
+++ /dev/null
Binary files differ
diff --git a/make/lib/cpptasks-version.txt b/make/lib/cpptasks-version.txt
index 339d395..231d444 100755
--- a/make/lib/cpptasks-version.txt
+++ b/make/lib/cpptasks-version.txt
@@ -1,5 +1,6 @@
Current cpptasks is from
<http://jogamp.org/git/?p=ant-cpptasks.git;a=summary>
+commit 19c854265956942497dc89444a9ee84f18383671
Original cpptasks is from
<http://ant-contrib.sourceforge.net/cpptasks/index.html>
diff --git a/make/lib/cpptasks.jar b/make/lib/cpptasks.jar
index 44a82ed..bd29273 100644
--- a/make/lib/cpptasks.jar
+++ b/make/lib/cpptasks.jar
Binary files differ
diff --git a/make/lib/gluegen-cpptasks-android-aarch64.xml b/make/lib/gluegen-cpptasks-android-aarch64.xml
new file mode 100644
index 0000000..37ba226
--- /dev/null
+++ b/make/lib/gluegen-cpptasks-android-aarch64.xml
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ This is an example of how to add custom compiler/linker
+ arguments for a crosscompiler.
+
+ You can use such files with setting the property 'gluegen-cpptasks.file', ie:
+
+ -Dgluegen-cpptasks.file=`pwd`/lib/gluegen-cpptasks-linux-32bit.xml
+
+ In case you want to compile for 32bit on a 64bit machine,
+ you might also need to set the 'os.arch' to 'x86'.
+ Example: gluegen/make/make.gluegen.all.linux-x86.sh
+ -->
+
+<project name="GlueGen-cpptasks-android-aarch64" basedir="." >
+
+<!-- Set OS and ARCH for crosscompilation compiler configuration -->
+<target name="gluegen.cpptasks.detect.os.custom">
+ <property name="gluegen.cpptasks.detected.os" value="true" />
+ <property name="is64Bit" value="true" />
+ <property name="isUnix" value="true" />
+ <property name="isAndroid" value="true" />
+ <property name="isAndroidARM64" value="true" />
+ <property name="jvmDataModel.arg" value="-Djnlp.no.jvm.data.model.set=true" />
+ <property name="isCrosscompilation" value="true" />
+ <property name="android.abi" value="${env.ANDROID_ABI}" /> <!-- arm64-v8a -->
+ <property name="isAbiEabiGnuArmel" value="true" />
+ <echo message="gluegen.cpptasks.detect.os.custom: GLUEGEN_CPPTASKS_FILE 'gluegen-cpptasks-android-aarch64' done"/>
+</target>
+
+<import file="${gluegen.root.abs-path}/make/gluegen-cpptasks-base.xml" optional="false" />
+
+<target name="gluegen.cpptasks.configure.compiler" depends="setup.java.home.dir,declare.linux.android">
+ <echo message="Custom forced compiler Android NDK, linker.cfg.android" />
+ <compiler id="compiler.cfg.android" name="clang">
+ <!-- compilerarg value="-isystem"/> LLVM's C++ STL
+ <compilerarg value="${env.ANDROID_TOOLCHAIN_SYSROOT1_INC_STL}" / -->
+ <compilerarg value="-isystem"/>
+ <compilerarg value="${env.ANDROID_TOOLCHAIN_SYSROOT1_INC}" />
+ <compilerarg value="-isystem"/>
+ <compilerarg value="${env.ANDROID_TOOLCHAIN_SYSROOT1_INC_ARCH}" />
+
+ <compilerarg value="-v" />
+
+ <compilerarg value="-fpic" />
+
+ <!-- from sdk cmake start -->
+ <compilerarg value="-fdata-sections" />
+ <compilerarg value="-ffunction-sections" />
+ <compilerarg value="-funwind-tables" />
+ <compilerarg value="-fstack-protector-strong" />
+ <compilerarg value="-no-canonical-prefixes" />
+ <compilerarg value="-nostdinc++" />
+ <!-- from sdk cmake end -->
+
+ <compilerarg value="-Wa,--noexecstack" />
+
+ <compilerarg value="-target" />
+ <compilerarg value="${env.ANDROID_LLVM_TRIPLE}" /> <!-- aarch64-none-linux-android -->
+ <!-- compilerarg value="-mabi=lp64" />
+ <compilerarg value="-mlittle-endian" />
+ <compilerarg value="-march=armv8-a" / -->
+ <!-- compilerarg value="-mfloat-abi=softfp" / -->
+
+ <!-- Generic ARM Flags -->
+ <compilerarg value="-fno-strict-aliasing"/> <!-- be safe -->
+
+ <compilerarg value="-O2" unless="c.compiler.use-debug" />
+ <!-- compilerarg value="-g" unless="c.compiler.use-debug" / -->
+ <compilerarg value="-fomit-frame-pointer" unless="c.compiler.use-debug"/>
+ <!-- compilerarg value="-funswitch-loops" unless="c.compiler.use-debug"/ not supported -->
+ <!-- compilerarg value="-finline-limit=300" unless="c.compiler.use-debug"/ not supported -->
+
+ <compilerarg value="-O0" if="c.compiler.use-debug" />
+ <compilerarg value="-g" if="c.compiler.use-debug" />
+ <compilerarg value="-fno-omit-frame-pointer" if="c.compiler.use-debug" />
+
+ <!-- includepath path="${env.ANDROID_TOOLCHAIN_SYSROOT1_INC}" / -->
+ <defineset>
+ <define name="__unix__" />
+ <define name="__LP64__" /> <!-- default pre-defined macro for 64bit unix -->
+ <define name="__aarch64__" /> <!-- default pre-defined macro for armv8-a, 64bit -->
+
+ <define name="ANDROID" />
+ <define name="_DEBUG" if="c.compiler.use-debug"/>
+ <define name="DEBUG" if="c.compiler.use-debug"/>
+ <define name="NDEBUG" unless="c.compiler.use-debug"/>
+ </defineset>
+ </compiler>
+
+ <linker id="linker.cfg.android" name="clang">
+ <linkerarg value="--sysroot=${env.ANDROID_TOOLCHAIN_SYSROOT0}" /> <!-- libs in std FS layout, but no include files -->
+ <linkerarg value="-L${env.ANDROID_TOOLCHAIN_SYSROOT1_LIB1}" />
+ <linkerarg value="-Wl,-rpath-link=${env.ANDROID_TOOLCHAIN_SYSROOT1_LIB1}" />
+ <linkerarg value="-L${env.ANDROID_TOOLCHAIN_SYSROOT1_LIB2}" />
+
+ <linkerarg value="-v" />
+
+ <linkerarg value="-fpic" />
+
+ <!-- from sdk cmake start -->
+ <linkerarg value="-Wl,--build-id" />
+ <!-- linkerarg value="-Wl,- -no-warn-shared-textrel" / unrecognized option -->
+ <linkerarg value="-Wl,--fatal-warnings" />
+ <linkerarg value="-nostdlib" />
+ <linkerarg value="-nostdlib++" />
+ <!-- from sdk cmake end -->
+
+ <linkerarg value="-fno-use-linker-plugin" />
+
+ <linkerarg value="-target" />
+ <linkerarg value="${env.ANDROID_LLVM_TRIPLE}" /> <!-- aarch64-none-linux-android -->
+ <!-- linkerarg value="-mabi=lp64" />
+ <linkerarg value="-mlittle-endian" />
+ <linkerarg value="-march=armv8-a" / -->
+ <!-- linkerarg value="-mfloat-abi=softfp" / -->
+
+ <linkerarg value="-Bdynamic" />
+ <linkerarg value="-Wl,-dynamic-linker,/system/bin/linker" />
+ <linkerarg value="-Wl,-z,nocopyreloc" />
+
+ <linkerarg value="--no-undefined" />
+
+ <!-- libset libs="c,m,dl,log" / -->
+ <libset libs="c,m,dl" />
+ </linker>
+
+</target>
+
+<target name="gluegen.cpptasks.declare.compiler" depends="setup.java.home.dir">
+ <echo message="Custom forced Linux.x86 cross compile android" />
+ <property name="compiler.cfg.id.base" value="compiler.cfg.android" />
+ <property name="linker.cfg.id.base" value="linker.cfg.android" />
+ <property name="java.includes.dir.platform" value="${java.includes.dir}/x11" />
+ <available property="java.lib.dir.platform" value="${java.home.dir}/jre/lib/i386"
+ file="${java.home.dir}/jre/lib/i386/libjava.so"/>
+ <available property="java.lib.dir.platform" value="${java.home.dir}/lib/i386"
+ file="${java.home.dir}/lib/i386/libjava.so"/>
+ <property name="java.lib.dir.platform" value="${java.home.dir}/lib"/> <!-- new default -->
+</target>
+
+<target name="declare.linux.android">
+ <echo message="android.${env.ANDROID_ABI}" />
+ <property name="compiler.cfg.id" value="compiler.cfg.android" />
+ <property name="linker.cfg.id" value="linker.cfg.android" />
+</target>
+
+</project>
+
+
diff --git a/make/lib/gluegen-cpptasks-android-armv6.xml b/make/lib/gluegen-cpptasks-android-armv6.xml
index 733f623..ca95a96 100644
--- a/make/lib/gluegen-cpptasks-android-armv6.xml
+++ b/make/lib/gluegen-cpptasks-android-armv6.xml
@@ -23,7 +23,7 @@
<property name="isAndroidARMv6" value="true" />
<property name="jvmDataModel.arg" value="-Djnlp.no.jvm.data.model.set=true" />
<property name="isCrosscompilation" value="true" />
- <property name="android.abi" value="armeabi" />
+ <property name="android.abi" value="${env.ANDROID_ABI}" /> <!-- armeabi-v7a -->
<property name="isAbiEabiGnuArmel" value="true" />
<echo message="gluegen.cpptasks.detect.os.custom: GLUEGEN_CPPTASKS_FILE 'gluegen-cpptasks-android-armv6' done"/>
</target>
@@ -32,39 +32,57 @@
<target name="gluegen.cpptasks.configure.compiler" depends="setup.java.home.dir,declare.linux.android">
<echo message="Custom forced compiler Android NDK, linker.cfg.android" />
- <compiler id="compiler.cfg.android" name="gcc">
- <compilerarg value="--sysroot=${env.TARGET_PLATFORM_ROOT}" />
- <!-- The default search dirs for 'gcc from $NDK_TOOLCHAIN_ROOT/$TARGET_TRIPLE/bin will not find
- subprograms properly (see gcc -print-search-dirs). Not sure if this is a bug in the NDK
- or not. Need to explicitly indicate where subprograms are with -B.
- NOTE: This is not necessary if using '$TARGET_TRIPLE-gcc' from $NDK_TOOLCHAIN_ROOT/bin. -->
- <compilerarg value="-B${env.NDK_TOOLCHAIN_ROOT}/libexec/gcc/${env.TARGET_TRIPLE}/${env.GCC_VERSION}" />
+ <compiler id="compiler.cfg.android" name="clang">
+ <!-- compilerarg value="-isystem"/> LLVM's C++ STL
+ <compilerarg value="${env.ANDROID_TOOLCHAIN_SYSROOT1_INC_STL}" / -->
+ <compilerarg value="-isystem"/>
+ <compilerarg value="${env.ANDROID_TOOLCHAIN_SYSROOT1_INC}" />
+ <compilerarg value="-isystem"/>
+ <compilerarg value="${env.ANDROID_TOOLCHAIN_SYSROOT1_INC_ARCH}" />
+ <compilerarg value="-v" />
+
+ <compilerarg value="-fpic" />
+
+ <!-- from sdk cmake start -->
+ <compilerarg value="-fdata-sections" />
<compilerarg value="-ffunction-sections" />
<compilerarg value="-funwind-tables" />
- <compilerarg value="-fstack-protector" />
- <compilerarg value="-fpic" />
+ <compilerarg value="-fstack-protector-strong" />
+ <compilerarg value="-no-canonical-prefixes" />
+ <compilerarg value="-nostdinc++" />
+ <!-- from sdk cmake end -->
- <compilerarg value="-march=armv6" />
+ <compilerarg value="-Wa,--noexecstack" />
+
+ <compilerarg value="-target" />
+ <compilerarg value="${env.ANDROID_LLVM_TRIPLE}" /> <!-- armv7-none-linux-androideabi -->
+ <compilerarg value="-mfpu=neon" /> <!-- with NEON by default since NDK r21 -->
+ <!-- compilerarg value="-march=armv6" />
<compilerarg value="-mfloat-abi=softfp" />
- <compilerarg value="-marm" />
+ <compilerarg value="-marm" / -->
- <compilerarg value="-g" if="c.compiler.use-debug" />
- <compilerarg value="-O0" if="c.compiler.use-debug" />
- <compilerarg value="-Os" unless="c.compiler.use-debug" />
- <!--<compilerarg value="-O2" /> -->
+ <!-- Generic ARM Flags -->
+ <compilerarg value="-fno-strict-aliasing"/> <!-- be safe -->
- <compilerarg value="-fomit-frame-pointer" />
- <compilerarg value="-fno-strict-aliasing" />
- <compilerarg value="-finline-limit=64" />
- <compilerarg value="-Wa,--noexecstack" />
- <includepath path="${env.NDK_TOOLCHAIN_ROOT}/lib/gcc/${env.TARGET_TRIPLE}/${env.GCC_VERSION}/include" /> <!-- for stdarg.h -->
+ <compilerarg value="-O2" unless="c.compiler.use-debug" />
+ <!-- compilerarg value="-g" unless="c.compiler.use-debug" /-->
+ <compilerarg value="-fomit-frame-pointer" unless="c.compiler.use-debug"/>
+ <!-- compilerarg value="-funswitch-loops" unless="c.compiler.use-debug"/ not supported -->
+ <!-- compilerarg value="-finline-limit=300" unless="c.compiler.use-debug"/ not supported -->
+
+ <compilerarg value="-O0" if="c.compiler.use-debug" />
+ <compilerarg value="-g" if="c.compiler.use-debug" />
+ <compilerarg value="-fno-omit-frame-pointer" if="c.compiler.use-debug" />
+
+ <!-- includepath path="${env.ANDROID_TOOLCHAIN_SYSROOT1_INC}" / -->
<defineset>
<define name="__unix__" />
<define name="__ARM_ARCH_5__" />
<define name="__ARM_ARCH_5T__" />
<define name="__ARM_ARCH_5E__" />
<define name="__ARM_ARCH_5TE__" />
+ <define name="HAVE_NEON" />
<define name="ANDROID" />
<define name="_DEBUG" if="c.compiler.use-debug"/>
<define name="DEBUG" if="c.compiler.use-debug"/>
@@ -72,31 +90,42 @@
</defineset>
</compiler>
- <linker id="linker.cfg.android" name="gcc">
- <linkerarg value="--sysroot=${env.TARGET_PLATFORM_ROOT}" />
- <linkerarg value="-fpic" />
- <linkerarg value="-fno-use-linker-plugin" />
-
- <linkerarg value="-march=armv6" />
- <linkerarg value="-mfloat-abi=softfp" />
- <linkerarg value="-marm" />
-
- <linkerarg value="-nostdlib" />
- <linkerarg value="-Bdynamic" />
- <linkerarg value="-Wl,-dynamic-linker,/system/bin/linker" />
- <linkerarg value="-Wl,-z,nocopyreloc" />
-
- <linkerarg value="--demangle" />
- <linkerarg value="--gc-sections" />
- <linkerarg value="--no-undefined" />
- <linkerarg value="-static-libgcc"/>
- <!-- The gcc from $NDK_TOOLCHAIN_ROOT/$TARGET_TRIPLE/bin needs to be told
- where to find libgcc as the default location (gcc -print-search-dirs)
- is not correct. Not sure if this is a bug in the NDK or not. We also
- enforce that libgcc is linked after source files but before other shared
- libraries. -->
- <libset dir="${env.NDK_TOOLCHAIN_ROOT}/lib/gcc/${env.TARGET_TRIPLE}/${env.GCC_VERSION}" libs="gcc" />
- <libset libs="c,m,dl" />
+ <linker id="linker.cfg.android" name="clang">
+ <linkerarg value="--sysroot=${env.ANDROID_TOOLCHAIN_SYSROOT0}" /> <!-- libs in std FS layout, but no include files -->
+ <linkerarg value="-L${env.ANDROID_TOOLCHAIN_SYSROOT1_LIB1}" />
+ <linkerarg value="-Wl,-rpath-link=${env.ANDROID_TOOLCHAIN_SYSROOT1_LIB1}" />
+ <linkerarg value="-L${env.ANDROID_TOOLCHAIN_SYSROOT1_LIB2}" />
+
+ <linkerarg value="-v" />
+
+ <linkerarg value="-fpic" />
+
+ <!-- from sdk cmake start -->
+ <linkerarg value="-Wl,--build-id" />
+ <linkerarg value="-Wl,--no-warn-shared-textrel" />
+ <linkerarg value="-Wl,--fatal-warnings" />
+ <linkerarg value="-nostdlib" />
+ <linkerarg value="-nostdlib++" />
+ <!-- from sdk cmake end -->
+
+ <linkerarg value="-fno-use-linker-plugin" />
+
+ <linkerarg value="-target" />
+ <linkerarg value="${env.ANDROID_LLVM_TRIPLE}" /> <!-- armv7-none-linux-androideabi -->
+ <linkerarg value="-mfpu=neon" /> <!-- with NEON by default since NDK r21 -->
+ <!--
+ <linkerarg value="-march=armv6" />
+ <linkerarg value="-mfloat-abi=softfp" />
+ <linkerarg value="-marm" /> -->
+
+ <linkerarg value="-Bdynamic" />
+ <linkerarg value="-Wl,-dynamic-linker,/system/bin/linker" />
+ <linkerarg value="-Wl,-z,nocopyreloc" />
+
+ <!-- linkerarg value="- -no-undefined" / -->
+
+ <!-- libset libs="c,m,dl,log" / -->
+ <libset libs="c,m,dl" />
</linker>
</target>
@@ -105,14 +134,18 @@
<echo message="Custom forced Linux.x86 cross compile android" />
<property name="compiler.cfg.id.base" value="compiler.cfg.android" />
<property name="linker.cfg.id.base" value="linker.cfg.android" />
- <property name="java.lib.dir.platform" value="${java.home.dir}/jre/lib/i386" />
- <property name="java.includes.dir.platform" value="${java.includes.dir}/linux" />
+ <property name="java.includes.dir.platform" value="${java.includes.dir}/x11" />
+ <available property="java.lib.dir.platform" value="${java.home.dir}/jre/lib/i386"
+ file="${java.home.dir}/jre/lib/i386/libjava.so"/>
+ <available property="java.lib.dir.platform" value="${java.home.dir}/lib/i386"
+ file="${java.home.dir}/lib/i386/libjava.so"/>
+ <property name="java.lib.dir.platform" value="${java.home.dir}/lib"/> <!-- new default -->
</target>
<target name="declare.linux.android">
- <echo message="android.arm" />
- <property name="compiler.cfg.id" value="compiler.cfg.android" />
- <property name="linker.cfg.id" value="linker.cfg.android" />
+ <echo message="android.${env.ANDROID_ABI}" />
+ <property name="compiler.cfg.id" value="compiler.cfg.android" />
+ <property name="linker.cfg.id" value="linker.cfg.android" />
</target>
</project>
diff --git a/make/lib/gluegen-cpptasks-android-armv7.xml b/make/lib/gluegen-cpptasks-android-armv7.xml
deleted file mode 100644
index d854d4f..0000000
--- a/make/lib/gluegen-cpptasks-android-armv7.xml
+++ /dev/null
@@ -1,120 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
- This is an example of how to add custom compiler/linker
- arguments for a crosscompiler.
-
- You can use such files with setting the property 'gluegen-cpptasks.file', ie:
-
- -Dgluegen-cpptasks.file=`pwd`/lib/gluegen-cpptasks-linux-32bit.xml
-
- In case you want to compile for 32bit on a 64bit machine,
- you might also need to set the 'os.arch' to 'x86'.
- Example: gluegen/make/make.gluegen.all.linux-x86.sh
- -->
-
-<project name="GlueGen-cpptasks-android-armv7" basedir="." >
-
-<!-- Set OS and ARCH for crosscompilation compiler configuration -->
-<target name="gluegen.cpptasks.detect.os.custom">
- <property name="gluegen.cpptasks.detected.os" value="true" />
- <property name="isUnix" value="true" />
- <property name="isAndroid" value="true" />
- <property name="isAndroidARMv6" value="true" />
- <property name="jvmDataModel.arg" value="-Djnlp.no.jvm.data.model.set=true" />
- <property name="isCrosscompilation" value="true" />
- <property name="android.abi" value="armeabi-v7a" />
- <property name="isAbiEabiGnuArmel" value="true" />
- <echo message="gluegen.cpptasks.detect.os.custom: GLUEGEN_CPPTASKS_FILE 'gluegen-cpptasks-android-armv7' done"/>
-</target>
-
-<import file="${gluegen.root.abs-path}/make/gluegen-cpptasks-base.xml" optional="false" />
-
-<target name="gluegen.cpptasks.configure.compiler" depends="setup.java.home.dir,declare.linux.android">
- <echo message="Custom forced compiler Android NDK, linker.cfg.android" />
- <compiler id="compiler.cfg.android" name="gcc">
- <compilerarg value="--sysroot=${env.TARGET_PLATFORM_ROOT}" />
- <!-- The default search dirs for 'gcc from $NDK_TOOLCHAIN_ROOT/$TARGET_TRIPLE/bin will not find
- subprograms properly (see gcc -print-search-dirs). Not sure if this is a bug in the NDK
- or not. Need to explicitly indicate where subprograms are with -B.
- NOTE: This is not necessary if using '$TARGET_TRIPLE-gcc' from $NDK_TOOLCHAIN_ROOT/bin. -->
- <compilerarg value="-B${env.NDK_TOOLCHAIN_ROOT}/libexec/gcc/${env.TARGET_TRIPLE}/${env.GCC_VERSION}" />
-
- <compilerarg value="-ffunction-sections" />
- <compilerarg value="-funwind-tables" />
- <compilerarg value="-fstack-protector" />
- <compilerarg value="-fpic" />
-
- <compilerarg value="-march=armv7-a" />
- <compilerarg value="-mfloat-abi=softfp" />
- <compilerarg value="-marm" />
-
- <compilerarg value="-g" if="c.compiler.use-debug" />
- <compilerarg value="-O0" if="c.compiler.use-debug" />
- <compilerarg value="-Os" unless="c.compiler.use-debug" />
- <!--<compilerarg value="-O2" /> -->
-
- <compilerarg value="-fomit-frame-pointer" />
- <compilerarg value="-fno-strict-aliasing" />
- <compilerarg value="-finline-limit=64" />
- <compilerarg value="-Wa,--noexecstack" />
- <includepath path="${env.NDK_TOOLCHAIN_ROOT}/lib/gcc/${env.TARGET_TRIPLE}/${env.GCC_VERSION}/include" /> <!-- for stdarg.h -->
- <defineset>
- <define name="__unix__" />
- <define name="__ARM_ARCH_5__" />
- <define name="__ARM_ARCH_5T__" />
- <define name="__ARM_ARCH_5E__" />
- <define name="__ARM_ARCH_5TE__" />
- <define name="ANDROID" />
- <define name="_DEBUG" if="c.compiler.use-debug"/>
- <define name="DEBUG" if="c.compiler.use-debug"/>
- <define name="NDEBUG" unless="c.compiler.use-debug"/>
- </defineset>
- </compiler>
-
- <linker id="linker.cfg.android" name="gcc">
- <linkerarg value="--sysroot=${env.TARGET_PLATFORM_ROOT}" />
- <linkerarg value="-fpic" />
- <linkerarg value="-fno-use-linker-plugin" />
-
- <linkerarg value="-march=armv7-a" />
- <linkerarg value="-mfloat-abi=softfp" />
- <linkerarg value="-marm" />
-
- <linkerarg value="-nostdlib" />
- <linkerarg value="-Bdynamic" />
- <linkerarg value="-Wl,-dynamic-linker,/system/bin/linker" />
- <linkerarg value="-Wl,-z,nocopyreloc" />
-
- <linkerarg value="--demangle" />
- <linkerarg value="--gc-sections" />
- <linkerarg value="--no-undefined" />
- <linkerarg value="-static-libgcc"/>
- <!-- The gcc from $NDK_TOOLCHAIN_ROOT/$TARGET_TRIPLE/bin needs to be told
- where to find libgcc as the default location (gcc -print-search-dirs)
- is not correct. Not sure if this is a bug in the NDK or not. We also
- enforce that libgcc is linked after source files but before other shared
- libraries. -->
- <libset dir="${env.NDK_TOOLCHAIN_ROOT}/lib/gcc/${env.TARGET_TRIPLE}/${env.GCC_VERSION}/armv7-a" libs="gcc" />
- <libset libs="c,m,dl" />
- </linker>
-
-</target>
-
-<target name="gluegen.cpptasks.declare.compiler" depends="setup.java.home.dir">
- <echo message="Custom forced Linux.x86 cross compile android" />
- <property name="compiler.cfg.id.base" value="compiler.cfg.android" />
- <property name="linker.cfg.id.base" value="linker.cfg.android" />
- <property name="java.lib.dir.platform" value="${java.home.dir}/jre/lib/i386" />
- <property name="java.includes.dir.platform" value="${java.includes.dir}/linux" />
-</target>
-
-<target name="declare.linux.android">
- <echo message="android.arm" />
- <property name="compiler.cfg.id" value="compiler.cfg.android" />
- <property name="linker.cfg.id" value="linker.cfg.android" />
-</target>
-
-</project>
-
-
diff --git a/make/lib/gluegen-cpptasks-android-x86.xml b/make/lib/gluegen-cpptasks-android-x86.xml
new file mode 100644
index 0000000..8b53635
--- /dev/null
+++ b/make/lib/gluegen-cpptasks-android-x86.xml
@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ This is an example of how to add custom compiler/linker
+ arguments for a crosscompiler.
+
+ You can use such files with setting the property 'gluegen-cpptasks.file', ie:
+
+ -Dgluegen-cpptasks.file=`pwd`/lib/gluegen-cpptasks-linux-32bit.xml
+
+ In case you want to compile for 32bit on a 64bit machine,
+ you might also need to set the 'os.arch' to 'x86'.
+ Example: gluegen/make/make.gluegen.all.linux-x86.sh
+ -->
+
+<project name="GlueGen-cpptasks-android-x86" basedir="." >
+
+<!-- Set OS and ARCH for crosscompilation compiler configuration -->
+<target name="gluegen.cpptasks.detect.os.custom">
+ <property name="gluegen.cpptasks.detected.os" value="true" />
+ <property name="isUnix" value="true" />
+ <property name="isAndroid" value="true" />
+ <property name="isAndroidX86" value="true" />
+ <property name="jvmDataModel.arg" value="-Djnlp.no.jvm.data.model.set=true" />
+ <property name="isCrosscompilation" value="true" />
+ <property name="android.abi" value="${env.ANDROID_ABI}" /> <!-- x86 -->
+ <echo message="gluegen.cpptasks.detect.os.custom: GLUEGEN_CPPTASKS_FILE 'gluegen-cpptasks-android-x86' done"/>
+</target>
+
+<import file="${gluegen.root.abs-path}/make/gluegen-cpptasks-base.xml" optional="false" />
+
+<target name="gluegen.cpptasks.configure.compiler" depends="setup.java.home.dir,declare.linux.android">
+ <echo message="Custom forced compiler Android NDK, linker.cfg.android" />
+ <compiler id="compiler.cfg.android" name="clang">
+ <!-- compilerarg value="-isystem"/> LLVM's C++ STL
+ <compilerarg value="${env.ANDROID_TOOLCHAIN_SYSROOT1_INC_STL}" / -->
+ <compilerarg value="-isystem"/>
+ <compilerarg value="${env.ANDROID_TOOLCHAIN_SYSROOT1_INC}" />
+ <compilerarg value="-isystem"/>
+ <compilerarg value="${env.ANDROID_TOOLCHAIN_SYSROOT1_INC_ARCH}" />
+
+ <compilerarg value="-v" />
+
+ <compilerarg value="-fpic" />
+
+ <!-- from sdk cmake start -->
+ <compilerarg value="-fdata-sections" />
+ <compilerarg value="-ffunction-sections" />
+ <compilerarg value="-funwind-tables" />
+ <compilerarg value="-fstack-protector-strong" />
+ <compilerarg value="-no-canonical-prefixes" />
+ <compilerarg value="-nostdinc++" />
+ <!-- from sdk cmake end -->
+
+ <compilerarg value="-Wa,--noexecstack" />
+
+ <compilerarg value="-target" />
+ <compilerarg value="${env.ANDROID_LLVM_TRIPLE}" /> <!-- i686-none-linux-android -->
+ <!-- compilerarg value="-mtune=atom" />
+ <compilerarg value="-mssse3" />
+ <compilerarg value="-mfpmath=sse" />
+ <compilerarg value="-mlong-double-80" / -->
+
+ <!-- Generic Flags -->
+ <compilerarg value="-fno-strict-aliasing"/> <!-- be safe -->
+
+ <compilerarg value="-O2" unless="c.compiler.use-debug" />
+ <!-- compilerarg value="-g" unless="c.compiler.use-debug" / -->
+ <compilerarg value="-fomit-frame-pointer" unless="c.compiler.use-debug"/>
+ <!-- compilerarg value="-funswitch-loops" unless="c.compiler.use-debug"/ not supported -->
+ <!-- compilerarg value="-finline-limit=300" unless="c.compiler.use-debug"/ not supported -->
+
+ <compilerarg value="-O0" if="c.compiler.use-debug" />
+ <compilerarg value="-g" if="c.compiler.use-debug" />
+ <compilerarg value="-fno-omit-frame-pointer" if="c.compiler.use-debug" />
+
+ <!-- includepath path="${env.ANDROID_TOOLCHAIN_SYSROOT1_INC}" / -->
+ <defineset>
+ <define name="__unix__" />
+
+ <define name="ANDROID" />
+ <define name="_DEBUG" if="c.compiler.use-debug"/>
+ <define name="DEBUG" if="c.compiler.use-debug"/>
+ <define name="NDEBUG" unless="c.compiler.use-debug"/>
+ </defineset>
+ </compiler>
+
+ <linker id="linker.cfg.android" name="clang">
+ <linkerarg value="--sysroot=${env.ANDROID_TOOLCHAIN_SYSROOT0}" /> <!-- libs in std FS layout, but no include files -->
+ <linkerarg value="-L${env.ANDROID_TOOLCHAIN_SYSROOT1_LIB1}" />
+ <linkerarg value="-Wl,-rpath-link=${env.ANDROID_TOOLCHAIN_SYSROOT1_LIB1}" />
+ <linkerarg value="-L${env.ANDROID_TOOLCHAIN_SYSROOT1_LIB2}" />
+
+ <linkerarg value="-v" />
+
+ <linkerarg value="-fpic" />
+
+ <!-- from sdk cmake start -->
+ <linkerarg value="-Wl,--build-id" />
+ <linkerarg value="-Wl,--no-warn-shared-textrel" />
+ <linkerarg value="-Wl,--fatal-warnings" />
+ <linkerarg value="-nostdlib" />
+ <linkerarg value="-nostdlib++" />
+ <!-- from sdk cmake end -->
+
+ <linkerarg value="-fno-use-linker-plugin" />
+
+ <linkerarg value="-target" />
+ <linkerarg value="${env.ANDROID_LLVM_TRIPLE}" /> <!-- i686-none-linux-android -->
+ <!-- linkerarg value="-mtune=atom" />
+ <linkerarg value="-mssse3" />
+ <linkerarg value="-mfpmath=sse" />
+ <linkerarg value="-mlong-double-80" / -->
+
+ <linkerarg value="-Bdynamic" />
+ <linkerarg value="-Wl,-dynamic-linker,/system/bin/linker" />
+ <linkerarg value="-Wl,-z,nocopyreloc" />
+
+ <linkerarg value="--no-undefined" />
+
+ <!-- libset libs="c,m,dl,log" / -->
+ <libset libs="c,m,dl" />
+ </linker>
+
+</target>
+
+<target name="gluegen.cpptasks.declare.compiler" depends="setup.java.home.dir">
+ <echo message="Custom forced Linux.x86 cross compile android" />
+ <property name="compiler.cfg.id.base" value="compiler.cfg.android" />
+ <property name="linker.cfg.id.base" value="linker.cfg.android" />
+ <property name="java.includes.dir.platform" value="${java.includes.dir}/x11" />
+ <available property="java.lib.dir.platform" value="${java.home.dir}/jre/lib/i386"
+ file="${java.home.dir}/jre/lib/i386/libjava.so"/>
+ <available property="java.lib.dir.platform" value="${java.home.dir}/lib/i386"
+ file="${java.home.dir}/lib/i386/libjava.so"/>
+ <property name="java.lib.dir.platform" value="${java.home.dir}/lib"/> <!-- new default -->
+</target>
+
+<target name="declare.linux.android">
+ <echo message="android.${env.ANDROID_ABI}" />
+ <property name="compiler.cfg.id" value="compiler.cfg.android" />
+ <property name="linker.cfg.id" value="linker.cfg.android" />
+</target>
+
+</project>
+
+
diff --git a/make/lib/gluegen-cpptasks-ios-aarch64.xml b/make/lib/gluegen-cpptasks-ios-aarch64.xml
new file mode 100644
index 0000000..fc6aa6a
--- /dev/null
+++ b/make/lib/gluegen-cpptasks-ios-aarch64.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project name="GlueGen-cpptasks-ios-aarch64" basedir="." >
+
+<!-- Only set 'isIOSArm64' then continue via default task 'gluegen.cpptasks.detect.os.1' etc -->
+<target name="gluegen.cpptasks.detect.os.custom">
+ <property name="isIOSArm64" value="true" />
+ <property name="junit.is.disabled" value="true" />
+ <property name="junit.compile.skip" value="true" />
+ <property name="test.compile.skip" value="true" />
+ <echo message="gluegen.cpptasks.detect.os.custom: GLUEGEN_CPPTASKS_FILE 'gluegen-cpptasks-ios-aarch64' done"/>
+</target>
+
+<import file="${gluegen.root.abs-path}/make/gluegen-cpptasks-base.xml" optional="false" />
+
+</project>
+
+
diff --git a/make/lib/gluegen-cpptasks-ios-amd64.xml b/make/lib/gluegen-cpptasks-ios-amd64.xml
new file mode 100644
index 0000000..3f7f802
--- /dev/null
+++ b/make/lib/gluegen-cpptasks-ios-amd64.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project name="GlueGen-cpptasks-ios-amd64" basedir="." >
+
+<!-- Only set 'isIOSAmd64' then continue via default task 'gluegen.cpptasks.detect.os.1' etc -->
+<target name="gluegen.cpptasks.detect.os.custom">
+ <property name="isIOSAmd64" value="true" />
+ <property name="junit.is.disabled" value="true" />
+ <property name="junit.compile.skip" value="true" />
+ <property name="test.compile.skip" value="true" />
+ <echo message="gluegen.cpptasks.detect.os.custom: GLUEGEN_CPPTASKS_FILE 'gluegen-cpptasks-ios-amd64' done"/>
+</target>
+
+<import file="${gluegen.root.abs-path}/make/gluegen-cpptasks-base.xml" optional="false" />
+
+</project>
+
diff --git a/make/lib/gluegen-cpptasks-linux-32bit.xml b/make/lib/gluegen-cpptasks-linux-32bit.xml
index 69afca8..ad79c25 100644
--- a/make/lib/gluegen-cpptasks-linux-32bit.xml
+++ b/make/lib/gluegen-cpptasks-linux-32bit.xml
@@ -43,8 +43,12 @@
-->
<property name="compiler.cfg.id.base" value="compiler.cfg.linux" />
<property name="linker.cfg.id.base" value="linker.cfg.linux" />
- <property name="java.lib.dir.platform" value="${java.home.dir}/jre/lib/i386" />
- <property name="java.includes.dir.platform" value="${java.includes.dir}/linux" />
+ <property name="java.includes.dir.platform" value="${java.includes.dir}/x11" />
+ <available property="java.lib.dir.platform" value="${java.home.dir}/jre/lib/i386"
+ file="${java.home.dir}/jre/lib/i386/libjava.so"/>
+ <available property="java.lib.dir.platform" value="${java.home.dir}/lib/i386"
+ file="${java.home.dir}/lib/i386/libjava.so"/>
+ <property name="java.lib.dir.platform" value="${java.home.dir}/lib"/> <!-- new default -->
</target>
</project>
diff --git a/make/lib/gluegen-cpptasks-linux-aarch64-ontarget.xml b/make/lib/gluegen-cpptasks-linux-aarch64-ontarget.xml
new file mode 100644
index 0000000..e2e52fd
--- /dev/null
+++ b/make/lib/gluegen-cpptasks-linux-aarch64-ontarget.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ This is an example of how to add custom compiler/linker
+ arguments for a crosscompiler.
+
+ You can use such files with setting the property 'gluegen-cpptasks.file', ie:
+
+ -Dgluegen-cpptasks.file=`pwd`/lib/gluegen-cpptasks-linux-aarch64.xml
+
+ In case you want to compile for 32bit on a 64bit machine,
+ you might also need to set the 'os.arch' to 'x86'.
+ Example: gluegen/make/make.gluegen.all.linux-x86.sh
+ -->
+
+<project name="GlueGen-cpptasks-linux-aarch64" basedir="." >
+
+<!-- Set OS and ARCH for crosscompilation compiler configuration -->
+<target name="gluegen.cpptasks.detect.os.custom">
+ <property name="gluegen.cpptasks.detected.os" value="true" />
+ <property name="is64Bit" value="true" />
+ <property name="isUnix" value="true" />
+ <property name="isLinux" value="true" />
+ <property name="isLinuxARM64" value="true" />
+ <property name="isX11" value="true" />
+ <property name="jvmDataModel.arg" value="-Djnlp.no.jvm.data.model.set=true" />
+ <property name="isAbiEabiGnuArmhf" value="true" />
+ <echo message="gluegen.cpptasks.detect.os.custom: GLUEGEN_CPPTASKS_FILE 'gluegen-cpptasks-linux-aarch64' done"/>
+</target>
+
+<import file="${gluegen.root.abs-path}/make/gluegen-cpptasks-base.xml" optional="false" />
+
+<target name="gluegen.cpptasks.configure.compiler" depends="setup.java.home.dir">
+ <echo message="Custom forced compiler Linux aarch64 hard float" />
+
+ <compiler id="compiler.cfg.linux.aarch64" name="gcc">
+ <defineset>
+ <define name="__unix__"/>
+ <define name="__X11__" if="isX11"/>
+ <define name="_DEBUG" if="c.compiler.use-debug"/>
+ <define name="DEBUG" if="c.compiler.use-debug"/>
+ <define name="NDEBUG" unless="c.compiler.use-debug"/>
+ </defineset>
+ <compilerarg value="-fpic" />
+ <compilerarg value="-march=armv8-a" />
+ <compilerarg value="-include"/>
+ <compilerarg value="${gluegen.root.abs-path}/make/stub_includes/platform/glibc-compat-symbols.h" />
+ </compiler>
+
+ <linker id="linker.cfg.linux.aarch64" name="gcc">
+ <linkerarg value="-fpic" />
+ <linkerarg value="-march=armv8-a" />
+ <linkerarg value="-nostdlib" />
+ <linkerarg value="-Bdynamic" />
+ <linkerarg value="-static-libgcc" if="isGCC"/>
+ <linkerarg value="-static-libstdc++" if="isGCC"/>
+ </linker>
+
+</target>
+
+</project>
diff --git a/make/lib/gluegen-cpptasks-linux-aarch64.xml b/make/lib/gluegen-cpptasks-linux-aarch64.xml
new file mode 100644
index 0000000..410589d
--- /dev/null
+++ b/make/lib/gluegen-cpptasks-linux-aarch64.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ This is an example of how to add custom compiler/linker
+ arguments for a crosscompiler.
+
+ You can use such files with setting the property 'gluegen-cpptasks.file', ie:
+
+ -Dgluegen-cpptasks.file=`pwd`/lib/gluegen-cpptasks-linux-aarch64.xml
+
+ In case you want to compile for 32bit on a 64bit machine,
+ you might also need to set the 'os.arch' to 'x86'.
+ Example: gluegen/make/make.gluegen.all.linux-x86.sh
+ -->
+
+<project name="GlueGen-cpptasks-linux-aarch64" basedir="." >
+
+<!-- Set OS and ARCH for crosscompilation compiler configuration -->
+<target name="gluegen.cpptasks.detect.os.custom">
+ <property name="gluegen.cpptasks.detected.os" value="true" />
+ <property name="is64Bit" value="true" />
+ <property name="isUnix" value="true" />
+ <property name="isLinux" value="true" />
+ <property name="isLinuxARM64" value="true" />
+ <property name="isX11" value="true" />
+ <property name="jvmDataModel.arg" value="-Djnlp.no.jvm.data.model.set=true" />
+ <property name="isCrosscompilation" value="true" />
+ <property name="isAbiEabiGnuArmhf" value="true" />
+ <echo message="gluegen.cpptasks.detect.os.custom: GLUEGEN_CPPTASKS_FILE 'gluegen-cpptasks-linux-aarch64' done"/>
+</target>
+
+<import file="${gluegen.root.abs-path}/make/gluegen-cpptasks-base.xml" optional="false" />
+
+<target name="gluegen.cpptasks.configure.compiler" depends="setup.java.home.dir">
+ <echo message="Custom forced compiler Linux aarch64 hard float" />
+
+ <compiler id="compiler.cfg.linux.aarch64" name="gcc">
+ <defineset>
+ <define name="__unix__"/>
+ <define name="__X11__" if="isX11"/>
+ <define name="_DEBUG" if="c.compiler.use-debug"/>
+ <define name="DEBUG" if="c.compiler.use-debug"/>
+ <define name="NDEBUG" unless="c.compiler.use-debug"/>
+ </defineset>
+ <compilerarg value="-fpic" />
+ <compilerarg value="-march=armv8-a" />
+ <compilerarg value="-include"/>
+ <compilerarg value="${gluegen.root.abs-path}/make/stub_includes/platform/glibc-compat-symbols.h" />
+ </compiler>
+
+ <linker id="linker.cfg.linux.aarch64" name="gcc">
+ <linkerarg value="-fpic" />
+ <linkerarg value="-march=armv8-a" />
+ <linkerarg value="-nostdlib" />
+ <linkerarg value="-Bdynamic" />
+ <linkerarg value="-static-libgcc" if="isGCC"/>
+ <linkerarg value="-static-libstdc++" if="isGCC"/>
+ </linker>
+
+</target>
+
+</project>
diff --git a/make/lib/gluegen-cpptasks-linux-armv6.xml b/make/lib/gluegen-cpptasks-linux-armv6hf-ontarget.xml
index 33f5891..5e03246 100644
--- a/make/lib/gluegen-cpptasks-linux-armv6.xml
+++ b/make/lib/gluegen-cpptasks-linux-armv6hf-ontarget.xml
@@ -13,7 +13,7 @@
Example: gluegen/make/make.gluegen.all.linux-x86.sh
-->
-<project name="GlueGen-cpptasks-linux-armv6" basedir="." >
+<project name="GlueGen-cpptasks-linux-armv6hf" basedir="." >
<!-- Set OS and ARCH for crosscompilation compiler configuration -->
<target name="gluegen.cpptasks.detect.os.custom">
@@ -23,15 +23,14 @@
<property name="isLinuxARMv6" value="true" />
<property name="isX11" value="true" />
<property name="jvmDataModel.arg" value="-Djnlp.no.jvm.data.model.set=true" />
- <property name="isCrosscompilation" value="true" />
- <property name="isAbiEabiGnuArmel" value="true" />
- <echo message="gluegen.cpptasks.detect.os.custom: GLUEGEN_CPPTASKS_FILE 'gluegen-cpptasks-linux-armv6' done"/>
+ <property name="isAbiEabiGnuArmhf" value="true" />
+ <echo message="gluegen.cpptasks.detect.os.custom: GLUEGEN_CPPTASKS_FILE 'gluegen-cpptasks-linux-armv6hf' done"/>
</target>
<import file="${gluegen.root.abs-path}/make/gluegen-cpptasks-base.xml" optional="false" />
<target name="gluegen.cpptasks.configure.compiler" depends="setup.java.home.dir">
- <echo message="Custom forced compiler Linux ARMv5te soft float" />
+ <echo message="Custom forced compiler Linux ARMv6t hard float" />
<compiler id="compiler.cfg.linux.armv6" name="gcc">
<defineset>
@@ -42,24 +41,26 @@
<define name="NDEBUG" unless="c.compiler.use-debug"/>
</defineset>
<compilerarg value="-fpic" />
- <compilerarg value="-march=armv5te" />
+ <compilerarg value="-march=armv6" />
+ <compilerarg value="-mfpu=vfp" />
+ <compilerarg value="-mfloat-abi=hard" />
<compilerarg value="-marm" />
- <compilerarg value="-mfloat-abi=softfp" />
<compilerarg value="-include"/>
<compilerarg value="${gluegen.root.abs-path}/make/stub_includes/platform/glibc-compat-symbols.h" />
</compiler>
<linker id="linker.cfg.linux.armv6" name="gcc">
<linkerarg value="-fpic" />
- <linkerarg value="-march=armv5te" />
+ <linkerarg value="-march=armv6" />
+ <linkerarg value="-mfpu=vfp" />
+ <linkerarg value="-mfloat-abi=hard" />
<linkerarg value="-marm" />
- <linkerarg value="-mfloat-abi=softfp" />
<linkerarg value="-nostdlib" />
<linkerarg value="-Bdynamic" />
- <linkerarg value="-static-libgcc"/>
+ <linkerarg value="-static-libgcc" if="isGCC"/>
+ <linkerarg value="-static-libstdc++" if="isGCC"/>
</linker>
+
</target>
</project>
-
-
diff --git a/make/lib/gluegen-cpptasks-linux-armv6hf.xml b/make/lib/gluegen-cpptasks-linux-armv6hf.xml
index 3e0a95a..a7f15a4 100644
--- a/make/lib/gluegen-cpptasks-linux-armv6hf.xml
+++ b/make/lib/gluegen-cpptasks-linux-armv6hf.xml
@@ -43,8 +43,9 @@
</defineset>
<compilerarg value="-fpic" />
<compilerarg value="-march=armv6" />
- <compilerarg value="-marm" />
+ <compilerarg value="-mfpu=vfp" />
<compilerarg value="-mfloat-abi=hard" />
+ <compilerarg value="-marm" />
<compilerarg value="-include"/>
<compilerarg value="${gluegen.root.abs-path}/make/stub_includes/platform/glibc-compat-symbols.h" />
</compiler>
@@ -52,11 +53,13 @@
<linker id="linker.cfg.linux.armv6" name="gcc">
<linkerarg value="-fpic" />
<linkerarg value="-march=armv6" />
- <linkerarg value="-marm" />
+ <linkerarg value="-mfpu=vfp" />
<linkerarg value="-mfloat-abi=hard" />
+ <linkerarg value="-marm" />
<linkerarg value="-nostdlib" />
<linkerarg value="-Bdynamic" />
- <linkerarg value="-static-libgcc"/>
+ <linkerarg value="-static-libgcc" if="isGCC"/>
+ <linkerarg value="-static-libstdc++" if="isGCC"/>
</linker>
</target>
diff --git a/make/lib/semantic-versioning/README.md b/make/lib/semantic-versioning/README.md
index 26f02a2..fe13cc5 100644
--- a/make/lib/semantic-versioning/README.md
+++ b/make/lib/semantic-versioning/README.md
@@ -150,7 +150,7 @@ the maven-enforcer-plugin and then configure the maven-enforcer-plugin to run th
<dependency>
<groupId>org.semver</groupId>
<artifactId>enforcer-rule</artifactId>
- <version>0.9.27</version>
+ <version>0.9.29</version>
</dependency>
...
</dependencies>
@@ -220,7 +220,7 @@ the maven-enforcer-plugin and then configure the maven-enforcer-plugin to run th
<dependency>
<groupId>org.semver</groupId>
<artifactId>enforcer-rule</artifactId>
- <version>0.9.27</version>
+ <version>0.9.29</version>
</dependency>
...
</dependencies>
@@ -310,7 +310,7 @@ Both rules allow to filter classes/packages:
<dependency>
<groupId>org.semver</groupId>
<artifactId>enforcer-rule</artifactId>
- <version>0.9.27</version>
+ <version>0.9.29</version>
</dependency>
```
diff --git a/make/lib/semantic-versioning/VERSION b/make/lib/semantic-versioning/VERSION
index 2bac82c..90e9d66 100644
--- a/make/lib/semantic-versioning/VERSION
+++ b/make/lib/semantic-versioning/VERSION
@@ -1,13 +1,20 @@
https://github.com/sgothel/semantic-versioning
forked from https://github.com/jeluard/semantic-versioning
-0.9.27-SNAPSHOT
+0.9.33-SNAPSHOT
-commit 9cdb6bbf6d3248a65aa78ced08211d609c356f91
-Author: Julien Eluard <[email protected]>
-Date: Thu Aug 28 01:19:08 2014 -0300
+commit 4f50b49c955f2bde2bb7eb4c7493206ec6bb1f2f
+Author: Sven Gothel <[email protected]>
+Date: Wed Oct 7 10:40:40 2015 +0200
- Update README.md
-
-branch jogamp
+ Fix JLS Binary Compat: Moving methods and fields upwards for classes _and_ interfaces is OK
+
+ - We shall also travers all interfaces upwards
+ - All methods and fields found upwards must be tested for compatibility as well!
+
+ Further:
+ - Add class-name to Field- and MethodInfo via new intermediate AbstractMemberInfo.
+ The class-name is used to have allow differs to find a class move upwards!
+
+ - Pretty printing of class move binary-compatible change
diff --git a/make/lib/semantic-versioning/semver-src.zip b/make/lib/semantic-versioning/semver-src.zip
index c0e6b02..8ea60af 100644
--- a/make/lib/semantic-versioning/semver-src.zip
+++ b/make/lib/semantic-versioning/semver-src.zip
Binary files differ
diff --git a/make/lib/semantic-versioning/semver.jar b/make/lib/semantic-versioning/semver.jar
index bce8e75..fbdcd49 100644
--- a/make/lib/semantic-versioning/semver.jar
+++ b/make/lib/semantic-versioning/semver.jar
Binary files differ
diff --git a/make/lib/toolchain/aarch64-linux-gnueabi/bin/c++ b/make/lib/toolchain/aarch64-linux-gnueabi/bin/c++
new file mode 120000
index 0000000..c920aa1
--- /dev/null
+++ b/make/lib/toolchain/aarch64-linux-gnueabi/bin/c++
@@ -0,0 +1 @@
+/usr/local/x-tools/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-c++ \ No newline at end of file
diff --git a/make/lib/toolchain/aarch64-linux-gnueabi/bin/cc b/make/lib/toolchain/aarch64-linux-gnueabi/bin/cc
new file mode 120000
index 0000000..dbba1df
--- /dev/null
+++ b/make/lib/toolchain/aarch64-linux-gnueabi/bin/cc
@@ -0,0 +1 @@
+/usr/local/x-tools/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-cc \ No newline at end of file
diff --git a/make/lib/toolchain/aarch64-linux-gnueabi/bin/g++ b/make/lib/toolchain/aarch64-linux-gnueabi/bin/g++
new file mode 120000
index 0000000..adeda86
--- /dev/null
+++ b/make/lib/toolchain/aarch64-linux-gnueabi/bin/g++
@@ -0,0 +1 @@
+/usr/local/x-tools/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-g++ \ No newline at end of file
diff --git a/make/lib/toolchain/aarch64-linux-gnueabi/bin/gcc b/make/lib/toolchain/aarch64-linux-gnueabi/bin/gcc
new file mode 120000
index 0000000..655df00
--- /dev/null
+++ b/make/lib/toolchain/aarch64-linux-gnueabi/bin/gcc
@@ -0,0 +1 @@
+/usr/local/x-tools/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-gcc \ No newline at end of file
diff --git a/make/lib/toolchain/aarch64-linux-gnueabi/bin/ld b/make/lib/toolchain/aarch64-linux-gnueabi/bin/ld
new file mode 120000
index 0000000..1931f6b
--- /dev/null
+++ b/make/lib/toolchain/aarch64-linux-gnueabi/bin/ld
@@ -0,0 +1 @@
+/usr/local/x-tools/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-ld.bfd \ No newline at end of file
diff --git a/make/lib/toolchain/aarch64-linux-gnueabi/bin/objdump b/make/lib/toolchain/aarch64-linux-gnueabi/bin/objdump
new file mode 120000
index 0000000..26f2062
--- /dev/null
+++ b/make/lib/toolchain/aarch64-linux-gnueabi/bin/objdump
@@ -0,0 +1 @@
+/usr/local/x-tools/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-objdump \ No newline at end of file
diff --git a/make/lib/toolchain/aarch64-linux-gnueabi/bin/strip b/make/lib/toolchain/aarch64-linux-gnueabi/bin/strip
new file mode 120000
index 0000000..2ecfa61
--- /dev/null
+++ b/make/lib/toolchain/aarch64-linux-gnueabi/bin/strip
@@ -0,0 +1 @@
+/usr/local/x-tools/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-strip \ No newline at end of file
diff --git a/make/lib/toolchain/armhf-linux-gnueabi/bin/c++ b/make/lib/toolchain/armhf-linux-gnueabi/bin/c++
index b625efa..1c36608 120000
--- a/make/lib/toolchain/armhf-linux-gnueabi/bin/c++
+++ b/make/lib/toolchain/armhf-linux-gnueabi/bin/c++
@@ -1 +1 @@
-/usr/local/x-tools/armhf-unknown-linux-gnueabi/bin/armhf-unknown-linux-gnueabi-c++ \ No newline at end of file
+/usr/local/x-tools/armv7-unknown-linux-gnueabihf/bin/armv7-unknown-linux-gnueabihf-c++ \ No newline at end of file
diff --git a/make/lib/toolchain/armhf-linux-gnueabi/bin/cc b/make/lib/toolchain/armhf-linux-gnueabi/bin/cc
index 6b785db..5bd6938 120000
--- a/make/lib/toolchain/armhf-linux-gnueabi/bin/cc
+++ b/make/lib/toolchain/armhf-linux-gnueabi/bin/cc
@@ -1 +1 @@
-/usr/local/x-tools/armhf-unknown-linux-gnueabi/bin/armhf-unknown-linux-gnueabi-cc \ No newline at end of file
+/usr/local/x-tools/armv7-unknown-linux-gnueabihf/bin/armv7-unknown-linux-gnueabihf-cc \ No newline at end of file
diff --git a/make/lib/toolchain/armhf-linux-gnueabi/bin/g++ b/make/lib/toolchain/armhf-linux-gnueabi/bin/g++
index 29bf2d3..08ee1e8 120000
--- a/make/lib/toolchain/armhf-linux-gnueabi/bin/g++
+++ b/make/lib/toolchain/armhf-linux-gnueabi/bin/g++
@@ -1 +1 @@
-/usr/local/x-tools/armhf-unknown-linux-gnueabi/bin/armhf-unknown-linux-gnueabi-g++ \ No newline at end of file
+/usr/local/x-tools/armv7-unknown-linux-gnueabihf/bin/armv7-unknown-linux-gnueabihf-g++ \ No newline at end of file
diff --git a/make/lib/toolchain/armhf-linux-gnueabi/bin/gcc b/make/lib/toolchain/armhf-linux-gnueabi/bin/gcc
index ad74056..1bc2286 120000
--- a/make/lib/toolchain/armhf-linux-gnueabi/bin/gcc
+++ b/make/lib/toolchain/armhf-linux-gnueabi/bin/gcc
@@ -1 +1 @@
-/usr/local/x-tools/armhf-unknown-linux-gnueabi/bin/armhf-unknown-linux-gnueabi-gcc \ No newline at end of file
+/usr/local/x-tools/armv7-unknown-linux-gnueabihf/bin/armv7-unknown-linux-gnueabihf-gcc \ No newline at end of file
diff --git a/make/lib/toolchain/armhf-linux-gnueabi/bin/ld b/make/lib/toolchain/armhf-linux-gnueabi/bin/ld
index 6d1bd13..2b4985e 120000
--- a/make/lib/toolchain/armhf-linux-gnueabi/bin/ld
+++ b/make/lib/toolchain/armhf-linux-gnueabi/bin/ld
@@ -1 +1 @@
-/usr/local/x-tools/armhf-unknown-linux-gnueabi/bin/armhf-unknown-linux-gnueabi-ld \ No newline at end of file
+/usr/local/x-tools/armv7-unknown-linux-gnueabihf/bin/armv7-unknown-linux-gnueabihf-ld.bfd \ No newline at end of file
diff --git a/make/lib/toolchain/armhf-linux-gnueabi/bin/objdump b/make/lib/toolchain/armhf-linux-gnueabi/bin/objdump
index 9502840..dd058e0 120000
--- a/make/lib/toolchain/armhf-linux-gnueabi/bin/objdump
+++ b/make/lib/toolchain/armhf-linux-gnueabi/bin/objdump
@@ -1 +1 @@
-/usr/local/x-tools/armhf-unknown-linux-gnueabi/bin/armhf-unknown-linux-gnueabi-objdump \ No newline at end of file
+/usr/local/x-tools/armv7-unknown-linux-gnueabihf/bin/armv7-unknown-linux-gnueabihf-objdump \ No newline at end of file
diff --git a/make/lib/toolchain/armhf-linux-gnueabi/bin/strip b/make/lib/toolchain/armhf-linux-gnueabi/bin/strip
index a4ce508..e366f85 120000
--- a/make/lib/toolchain/armhf-linux-gnueabi/bin/strip
+++ b/make/lib/toolchain/armhf-linux-gnueabi/bin/strip
@@ -1 +1 @@
-/usr/local/x-tools/armhf-unknown-linux-gnueabi/bin/armhf-unknown-linux-gnueabi-strip \ No newline at end of file
+/usr/local/x-tools/armv7-unknown-linux-gnueabihf/bin/armv7-unknown-linux-gnueabihf-strip \ No newline at end of file
diff --git a/make/lib/toolchain/armsf-linux-gnueabi/bin/c++ b/make/lib/toolchain/armsf-linux-gnueabi/bin/c++
deleted file mode 120000
index b13ecea..0000000
--- a/make/lib/toolchain/armsf-linux-gnueabi/bin/c++
+++ /dev/null
@@ -1 +0,0 @@
-/usr/local/x-tools/armsf-unknown-linux-gnueabi/bin/armsf-unknown-linux-gnueabi-c++ \ No newline at end of file
diff --git a/make/lib/toolchain/armsf-linux-gnueabi/bin/cc b/make/lib/toolchain/armsf-linux-gnueabi/bin/cc
deleted file mode 120000
index 9701ec5..0000000
--- a/make/lib/toolchain/armsf-linux-gnueabi/bin/cc
+++ /dev/null
@@ -1 +0,0 @@
-/usr/local/x-tools/armsf-unknown-linux-gnueabi/bin/armsf-unknown-linux-gnueabi-cc \ No newline at end of file
diff --git a/make/lib/toolchain/armsf-linux-gnueabi/bin/g++ b/make/lib/toolchain/armsf-linux-gnueabi/bin/g++
deleted file mode 120000
index 5869038..0000000
--- a/make/lib/toolchain/armsf-linux-gnueabi/bin/g++
+++ /dev/null
@@ -1 +0,0 @@
-/usr/local/x-tools/armsf-unknown-linux-gnueabi/bin/armsf-unknown-linux-gnueabi-g++ \ No newline at end of file
diff --git a/make/lib/toolchain/armsf-linux-gnueabi/bin/gcc b/make/lib/toolchain/armsf-linux-gnueabi/bin/gcc
deleted file mode 120000
index 171bfb6..0000000
--- a/make/lib/toolchain/armsf-linux-gnueabi/bin/gcc
+++ /dev/null
@@ -1 +0,0 @@
-/usr/local/x-tools/armsf-unknown-linux-gnueabi/bin/armsf-unknown-linux-gnueabi-gcc \ No newline at end of file
diff --git a/make/lib/toolchain/armsf-linux-gnueabi/bin/ld b/make/lib/toolchain/armsf-linux-gnueabi/bin/ld
deleted file mode 120000
index f10f5b8..0000000
--- a/make/lib/toolchain/armsf-linux-gnueabi/bin/ld
+++ /dev/null
@@ -1 +0,0 @@
-/usr/local/x-tools/armsf-unknown-linux-gnueabi/bin/armsf-unknown-linux-gnueabi-ld \ No newline at end of file
diff --git a/make/lib/toolchain/armsf-linux-gnueabi/bin/objdump b/make/lib/toolchain/armsf-linux-gnueabi/bin/objdump
deleted file mode 120000
index 8e28b95..0000000
--- a/make/lib/toolchain/armsf-linux-gnueabi/bin/objdump
+++ /dev/null
@@ -1 +0,0 @@
-/usr/local/x-tools/armsf-unknown-linux-gnueabi/bin/armsf-unknown-linux-gnueabi-objdump \ No newline at end of file
diff --git a/make/lib/toolchain/armsf-linux-gnueabi/bin/strip b/make/lib/toolchain/armsf-linux-gnueabi/bin/strip
deleted file mode 120000
index 1e5fe91..0000000
--- a/make/lib/toolchain/armsf-linux-gnueabi/bin/strip
+++ /dev/null
@@ -1 +0,0 @@
-/usr/local/x-tools/armsf-unknown-linux-gnueabi/bin/armsf-unknown-linux-gnueabi-strip \ No newline at end of file
diff --git a/make/lib/v2.2.1/gluegen-rt.jar b/make/lib/v2.2.1/gluegen-rt.jar
new file mode 100644
index 0000000..61c5da1
--- /dev/null
+++ b/make/lib/v2.2.1/gluegen-rt.jar
Binary files differ
diff --git a/make/lib/v2.3.0/gluegen-rt.jar b/make/lib/v2.3.0/gluegen-rt.jar
new file mode 100644
index 0000000..ed9bacb
--- /dev/null
+++ b/make/lib/v2.3.0/gluegen-rt.jar
Binary files differ
diff --git a/make/lib/v2.3.2/gluegen-rt.jar b/make/lib/v2.3.2/gluegen-rt.jar
new file mode 100644
index 0000000..742fdb2
--- /dev/null
+++ b/make/lib/v2.3.2/gluegen-rt.jar
Binary files differ
diff --git a/make/resources/android/AndroidManifest-Launcher.xml b/make/resources/android/AndroidManifest-Launcher.xml
index b554267..6bd919f 100644
--- a/make/resources/android/AndroidManifest-Launcher.xml
+++ b/make/resources/android/AndroidManifest-Launcher.xml
@@ -11,7 +11,7 @@
<!-- uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" / --> <!-- required for Android-Trace -->
<uses-permission android:name="android.permission.CAMERA" />
- <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="14"/>
+ <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28"/>
<application android:icon="@drawable/icon"
android:label="@string/app_launcher_name"
diff --git a/make/resources/android/AndroidManifest-Runtime.xml b/make/resources/android/AndroidManifest-Runtime.xml
index 7c9d867..ebed47c 100644
--- a/make/resources/android/AndroidManifest-Runtime.xml
+++ b/make/resources/android/AndroidManifest-Runtime.xml
@@ -6,7 +6,7 @@
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
<!-- uses-feature android:name="android.hardware.camera" android:required="false" / --> <!-- not yet -->
- <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="14"/>
+ <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28"/>
<application android:icon="@drawable/icon"
android:label="@string/app_runtime_name"
diff --git a/make/resources/android/AndroidManifest-Test.xml b/make/resources/android/AndroidManifest-Test.xml
index 41bee09..7058323 100644
--- a/make/resources/android/AndroidManifest-Test.xml
+++ b/make/resources/android/AndroidManifest-Test.xml
@@ -9,7 +9,7 @@
<uses-library android:name="com.jogamp.common" android:required="true" />
- <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="14"/>
+ <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28"/>
<application android:icon="@drawable/icon"
android:label="@string/app_test_name"
diff --git a/make/scripts/adb-am-force-stop-all.sh b/make/scripts/adb-am-force-stop-all.sh
new file mode 100644
index 0000000..699dbef
--- /dev/null
+++ b/make/scripts/adb-am-force-stop-all.sh
@@ -0,0 +1,14 @@
+#! /bin/sh
+
+echo jogamp process running
+adb $* shell ps | grep jogamp
+
+adb $* shell am force-stop jogamp.android.launcher
+adb $* shell am force-stop com.jogamp.common
+adb $* shell am force-stop com.jogamp.openal
+adb $* shell am force-stop com.jogamp.opengl
+adb $* shell am force-stop com.jogamp.opencl
+adb $* shell am force-stop com.jogamp.openal.test
+adb $* shell am force-stop com.jogamp.opengl.test
+adb $* shell am force-stop com.jogamp.opencl.test
+
diff --git a/make/scripts/adb-install-all-aarch64.sh b/make/scripts/adb-install-all-aarch64.sh
new file mode 100755
index 0000000..7f1de25
--- /dev/null
+++ b/make/scripts/adb-install-all-aarch64.sh
@@ -0,0 +1,2 @@
+adb $* install ../build-android-aarch64/jogamp-android-launcher.apk
+adb $* install ../build-android-aarch64/gluegen-rt-android-aarch64.apk
diff --git a/make/scripts/adb-install-all-armv6.sh b/make/scripts/adb-install-all-armv6.sh
index 866881c..e2754c2 100755
--- a/make/scripts/adb-install-all-armv6.sh
+++ b/make/scripts/adb-install-all-armv6.sh
@@ -1,2 +1,2 @@
adb $* install ../build-android-armv6/jogamp-android-launcher.apk
-adb $* install ../build-android-armv6/gluegen-rt-android-armeabi.apk
+adb $* install ../build-android-armv6/gluegen-rt-android-armv6.apk
diff --git a/make/scripts/adb-install-all-armv7.sh b/make/scripts/adb-install-all-armv7.sh
deleted file mode 100755
index 9a0e4f7..0000000
--- a/make/scripts/adb-install-all-armv7.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-adb $* install ../build-android-armv7/jogamp-android-launcher.apk
-adb $* install ../build-android-armv7/gluegen-rt-android-armeabi-v7a.apk
diff --git a/make/scripts/adb-install-all-x86.sh b/make/scripts/adb-install-all-x86.sh
new file mode 100755
index 0000000..138e7d1
--- /dev/null
+++ b/make/scripts/adb-install-all-x86.sh
@@ -0,0 +1,2 @@
+adb $* install ../build-android-x86/jogamp-android-launcher.apk
+adb $* install ../build-android-x86/gluegen-rt-android-x86.apk
diff --git a/make/scripts/adb-launch-main.sh b/make/scripts/adb-launch-main.sh
index aebbaed..5032146 100644
--- a/make/scripts/adb-launch-main.sh
+++ b/make/scripts/adb-launch-main.sh
@@ -4,7 +4,7 @@ export HOST_UID=jogamp
# jogamp02 - 10.1.0.122
export HOST_IP=10.1.0.122
#export HOST_IP=10.1.0.52
-export HOST_RSYNC_ROOT=PROJECTS/JOGL
+export HOST_RSYNC_ROOT=PROJECTS/JogAmp
export TARGET_UID=jogamp
#export TARGET_IP=panda02
diff --git a/make/scripts/adb-pm-clear-all.sh b/make/scripts/adb-pm-clear-all.sh
new file mode 100644
index 0000000..548234e
--- /dev/null
+++ b/make/scripts/adb-pm-clear-all.sh
@@ -0,0 +1,14 @@
+#! /bin/sh
+
+echo jogamp process running
+adb $* shell ps | grep jogamp
+
+adb $* shell pm clear jogamp.android.launcher
+adb $* shell pm clear com.jogamp.common
+adb $* shell pm clear com.jogamp.openal
+adb $* shell pm clear com.jogamp.opengl
+adb $* shell pm clear com.jogamp.opencl
+adb $* shell pm clear com.jogamp.openal.test
+adb $* shell pm clear com.jogamp.opengl.test
+adb $* shell pm clear com.jogamp.opencl.test
+
diff --git a/make/scripts/adb-reinstall-all-aarch64.sh b/make/scripts/adb-reinstall-all-aarch64.sh
new file mode 100755
index 0000000..e27a1e9
--- /dev/null
+++ b/make/scripts/adb-reinstall-all-aarch64.sh
@@ -0,0 +1,5 @@
+sdir=`dirname $0`
+
+$sdir/adb-uninstall-all.sh $*
+$sdir/adb-install-all-aarch64.sh $*
+
diff --git a/make/scripts/adb-reinstall-all-armv7.sh b/make/scripts/adb-reinstall-all-x86.sh
index 2cb7713..7db988d 100755
--- a/make/scripts/adb-reinstall-all-armv7.sh
+++ b/make/scripts/adb-reinstall-all-x86.sh
@@ -1,5 +1,5 @@
sdir=`dirname $0`
$sdir/adb-uninstall-all.sh $*
-$sdir/adb-install-all-armv7.sh $*
+$sdir/adb-install-all-x86.sh $*
diff --git a/make/scripts/check-java-major-version.sh b/make/scripts/check-java-major-version.sh
index 49c0445..fc9f53c 100755
--- a/make/scripts/check-java-major-version.sh
+++ b/make/scripts/check-java-major-version.sh
@@ -12,7 +12,7 @@ function dump_versions() {
#dump_version jogamp.common.Debug
javap -v `find . -name '*.class'` | grep -e '^Classfile' -e 'major version'
#for i in `find . -name '*.class'` ; do
- # dump_version `echo $i | sed -e 's/\//./g' -e 's/\.class//g'`
+ # dump_version `echo $i | sed -e 's/^\.\///g' -e 's/\//./g' -e 's/\.class//g'`
#done
cd $TDIR
}
diff --git a/make/scripts/crosstest-java-android-armv6-rel.sh b/make/scripts/crosstest-java-android-armv6-rel.sh
index b6d3f4b..e9055ff 100644
--- a/make/scripts/crosstest-java-android-armv6-rel.sh
+++ b/make/scripts/crosstest-java-android-armv6-rel.sh
@@ -2,7 +2,7 @@
export HOST_UID=jogamp
export HOST_IP=10.1.0.122
-export HOST_RSYNC_ROOT=PROJECTS/JOGL
+export HOST_RSYNC_ROOT=PROJECTS/JogAmp
export TARGET_UID=jogamp
export TARGET_IP=jautab03
diff --git a/make/scripts/crosstest-java-linux-armv6-rel.sh b/make/scripts/crosstest-java-linux-armv6-rel.sh
index 92cd2d2..84649d2 100644
--- a/make/scripts/crosstest-java-linux-armv6-rel.sh
+++ b/make/scripts/crosstest-java-linux-armv6-rel.sh
@@ -1,6 +1,6 @@
export HOST_UID=sven
export HOST_IP=jogamp02
-export HOST_RSYNC_ROOT=PROJECTS/JOGL
+export HOST_RSYNC_ROOT=PROJECTS/JogAmp
export TARGET_UID=jogamp
export TARGET_IP=panda01
diff --git a/make/scripts/crosstest-java-linux-armv6hf-rel.sh b/make/scripts/crosstest-java-linux-armv6hf-rel.sh
index 9c40ede..85a3765 100644
--- a/make/scripts/crosstest-java-linux-armv6hf-rel.sh
+++ b/make/scripts/crosstest-java-linux-armv6hf-rel.sh
@@ -1,6 +1,6 @@
export HOST_UID=sven
export HOST_IP=jogamp02
-export HOST_RSYNC_ROOT=PROJECTS/JOGL
+export HOST_RSYNC_ROOT=PROJECTS/JogAmp
export TARGET_UID=jogamp
export TARGET_IP=panda02
diff --git a/make/scripts/crosstest-junit-android-armv7-rel.sh b/make/scripts/crosstest-junit-android-armv7-rel.sh
deleted file mode 100644
index 3d5ada1..0000000
--- a/make/scripts/crosstest-junit-android-armv7-rel.sh
+++ /dev/null
@@ -1,69 +0,0 @@
-#! /bin/bash
-
-export HOST_UID=sven
-export HOST_IP=192.168.0.52
-export HOST_RSYNC_ROOT=PROJECTS/JOGL
-
-export TARGET_UID=jogamp
-export TARGET_IP=beagle02
-export TARGET_ROOT=/projects
-
-export BUILD_DIR=../build-android-armv7
-
-if [ -e /opt-linux-x86/android-sdk-linux_x86 ] ; then
- export ANDROID_HOME=/opt-linux-x86/android-sdk-linux_x86
- export PATH=$ANDROID_HOME/platform-tools:$PATH
-fi
-
-#
-# orig android:
-# export LD_LIBRARY_PATH /system/lib
-# 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:/system/framework/core-junit.jar
-#
-
-#TSTCLASS=com.jogamp.gluegen.test.junit.generation.Test1p1JavaEmitter
-TSTCLASS=com.jogamp.gluegen.test.junit.generation.Test1p2ProcAddressEmitter
-
-LOGFILE=`basename $0 .sh`.log
-
-# -Djava.class.path=lib/junit.jar:/usr/share/ant/lib/ant.jar:/usr/share/ant/lib/ant-junit.jar:$BUILD_DIR/gluegen.jar:$BUILD_DIR/test/build/gluegen-test.jar \
-# -Djava.class.path=lib/ant-junit-all.apk:$BUILD_DIR/gluegen-rt.apk \
-# -Djava.library.path=/system/lib:$TARGET_ROOT/gluegen/make/$BUILD_DIR/obj:$BUILD_DIR/test/build/natives \
-
-RSYNC_EXCLUDES="--exclude 'build-x86*/' --exclude 'build-linux*/' --exclude 'build-win*/' --exclude 'build-mac*/' \
- --exclude 'classes/' --exclude 'src/' --exclude '.git/' --exclude 'gluegen-java-src.zip' \
- --delete-excluded"
-
-echo "#! /system/bin/sh" > $BUILD_DIR/targetcommand.sh
-
-echo "\
-rsync -av --delete --delete-after $RSYNC_EXCLUDES $HOST_UID@$HOST_IP::$HOST_RSYNC_ROOT/gluegen $TARGET_ROOT ; \
-cd $TARGET_ROOT/gluegen/make ; \
-export LD_LIBRARY_PATH=/system/lib:$TARGET_ROOT/gluegen/make/$BUILD_DIR/obj:$TARGET_ROOT/gluegen/make/$BUILD_DIR/test/build/natives ; \
-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 ; \
-dalvikvm \
- -Xjnigreflimit:2000 \
- -cp ../make/lib/ant-junit-all.apk:../build-android-armv7/gluegen.apk:../build-android-armv7/test/build/gluegen-test.apk \
- -Djogamp.debug.JNILibLoader=true \
- -Djogamp.debug.NativeLibrary=true \
- -Djogamp.debug.NativeLibrary.Lookup=true \
- -Djogamp.debug.ProcAddressHelper=true \
- com.android.internal.util.WithFramework \
- org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner \
- $TSTCLASS \
- filtertrace=true \
- haltOnError=false \
- haltOnFailure=false \
- showoutput=true \
- outputtoformatters=true \
- logfailedtests=true \
- logtestlistenerevents=true \
- formatter=org.apache.tools.ant.taskdefs.optional.junit.PlainJUnitResultFormatter \
- formatter=org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter,./TEST-result.xml \
-" >> $BUILD_DIR/targetcommand.sh
-
-chmod ugo+x $BUILD_DIR/targetcommand.sh
-adb push $BUILD_DIR/targetcommand.sh $TARGET_ROOT/targetcommand.sh
-adb shell $TARGET_ROOT/targetcommand.sh 2>&1 | tee $LOGFILE
-adb pull $TARGET_ROOT/gluegen/make/TEST-result.xml TEST-result.xml
-
diff --git a/make/scripts/crosstest-junit-linux-armv7-rel.sh b/make/scripts/crosstest-junit-linux-armv7-rel.sh
index 6b46b06..01b43fd 100644
--- a/make/scripts/crosstest-junit-linux-armv7-rel.sh
+++ b/make/scripts/crosstest-junit-linux-armv7-rel.sh
@@ -1,6 +1,6 @@
export HOST_UID=sven
export HOST_IP=192.168.0.52
-export HOST_RSYNC_ROOT=PROJECTS/JOGL
+export HOST_RSYNC_ROOT=PROJECTS/JogAmp
export TARGET_UID=jogamp
export TARGET_IP=beagle01
diff --git a/make/scripts/java-win32.bat b/make/scripts/java-win32.bat
deleted file mode 100755
index 4cae57e..0000000
--- a/make/scripts/java-win32.bat
+++ /dev/null
@@ -1,21 +0,0 @@
-
-set BLD_SUB=build-win32
-set J2RE_HOME=c:\jre1.7.0_67_x32
-set JAVA_HOME=c:\jdk1.7.0_67_x32
-set ANT_PATH=C:\apache-ant-1.9.4
-
-set BLD_DIR=..\%BLD_SUB%
-REM set LIB_DIR=..\%BLD_SUB%\obj;..\%BLD_SUB%\test\build\natives
-set LIB_DIR=..\%BLD_SUB%\test\build\natives
-
-set PATH=%JAVA_HOME%\bin;%ANT_PATH%\bin;c:\mingw\bin;%LIB_DIR%;%PATH%
-
-set CP_ALL=.;lib\junit.jar;%ANT_PATH%\lib\ant.jar;%ANT_PATH%\lib\ant-junit.jar;lib/semantic-versioning/semver.jar;%BLD_DIR%\gluegen-rt.jar;%BLD_DIR%\gluegen.jar;%BLD_DIR%\gluegen-test-util.jar;%BLD_DIR%\test\build\gluegen-test.jar
-
-echo CP_ALL %CP_ALL%
-
-set D_ARGS="-Djogamp.debug.Platform" "-Djogamp.debug.NativeLibrary"
-REM set D_ARGS="-Djogamp.debug.IOUtil"
-REM set D_ARGS="-Djogamp.debug=all"
-
-%J2RE_HOME%\bin\java -classpath %CP_ALL% %D_ARGS% "-Djava.library.path=%LIB_DIR%" "-Dsun.java2d.noddraw=true" "-Dsun.awt.noerasebackground=true" %1 %2 %3 %4 %5 %6 %7 %8 %9 > java-win32.log 2>&1
diff --git a/make/scripts/java-win64.bat b/make/scripts/java-win64.bat
index 3f14c82..2f79cbd 100755
--- a/make/scripts/java-win64.bat
+++ b/make/scripts/java-win64.bat
@@ -1,22 +1,29 @@
set BLD_SUB=build-win64
-set J2RE_HOME=c:\jre1.7.0_67_x64
-set JAVA_HOME=c:\jdk1.7.0_67_x64
-set ANT_PATH=C:\apache-ant-1.9.4
+
+set J2RE_HOME=c:\jdk-17
+set JAVA_HOME=c:\jdk-17
+set ANT_PATH=C:\apache-ant-1.10.5
set BLD_DIR=..\%BLD_SUB%
-REM set LIB_DIR=..\%BLD_SUB%\obj;..\%BLD_SUB%\test\build\natives
-set LIB_DIR=..\%BLD_SUB%\test\build\natives
+set LIB_DIR=%cd%\..\%BLD_SUB%\test\build\natives
-set PATH=%JAVA_HOME%\bin;%ANT_PATH%\bin;c:\mingw\bin;%LIB_DIR%;%PATH%
+set PATH=%JAVA_HOME%\bin;%ANT_PATH%\bin;c:\mingw64\bin;%LIB_DIR%;%PATH%
-set CP_ALL=.;lib\junit.jar;%ANT_PATH%\lib\ant.jar;%ANT_PATH%\lib\ant-junit.jar;lib/semantic-versioning/semver.jar;%BLD_DIR%\gluegen-rt.jar;%BLD_DIR%\gluegen.jar;%BLD_DIR%\gluegen-test-util.jar;%BLD_DIR%\test\build\gluegen-test.jar
+set CP_ALL=.;lib\junit.jar;%ANT_PATH%\lib\ant.jar;%ANT_PATH%\lib\ant-junit.jar;lib/semantic-versioning/semver.jar;lib\TestJarsInJar.jar;%BLD_DIR%\gluegen-rt.jar;%BLD_DIR%\gluegen.jar;%BLD_DIR%\gluegen-test-util.jar;%BLD_DIR%\test\build\gluegen-test.jar
echo CP_ALL %CP_ALL%
-set D_ARGS="-Djogamp.debug.Platform" "-Djogamp.debug.NativeLibrary" "-Djogamp.debug.IOUtil"
-REM set D_ARGS="-Djogamp.debug.IOUtil"
+set X_ARGS="-Drootrel.build=%BLD_SUB%" "-Dgluegen.root=.."
+REM set D_ARGS="-Djogamp.debug.IOUtil" "-Djogamp.debug.JNILibLoader" "-Djogamp.debug.TempFileCache" "-Djogamp.debug.JarUtil" "-Djogamp.debug.TempJarCache"
+REM set D_ARGS="-Djogamp.debug.IOUtil" "-Djogamp.debug.NativeLibrary" "-Djogamp.debug.JNILibLoader" "-Djogamp.debug.TempFileCache" "-Djogamp.debug.JarUtil" "-Djogamp.debug.TempJarCache"
+REM set D_ARGS="-Djogamp.debug.Platform" "-Djogamp.debug.NativeLibrary" "-Djogamp.debug.IOUtil"
+REM set D_ARGS="-Djogamp.debug.IOUtil" "-Djogamp.debug.IOUtil.Exe" "-Djogamp.debug.IOUtil.Exe.NoStream"
+REM set D_ARGS="-Djogamp.debug.IOUtil" "-Djogamp.debug.TempFileCache" "-Djogamp.debug.TempJarCache" "-Djogamp.debug.IOUtil.Exe" "-Djogamp.gluegen.UseNativeExeFile=true" "-Djava.io.tmpdir=c:\temp_noexec"
+REM set D_ARGS="-Djogamp.debug.IOUtil" "-Djogamp.debug.TempFileCache" "-Djogamp.debug.TempJarCache" "-Djava.io.tmpdir=c:\temp_noexec"
+REM set D_ARGS="-Djogamp.debug.IOUtil" "-Djogamp.debug.IOUtil.Exe" "-Djogamp.debug.TempFileCache" "-Djogamp.debug.TempJarCache"
REM set D_ARGS="-Djogamp.debug=all"
-%J2RE_HOME%\bin\java -classpath %CP_ALL% %D_ARGS% "-Djava.library.path=%LIB_DIR%" "-Dsun.java2d.noddraw=true" "-Dsun.awt.noerasebackground=true" %1 %2 %3 %4 %5 %6 %7 %8 %9 > java-win64.log 2>&1
+%J2RE_HOME%\bin\java -classpath %CP_ALL% %X_ARGS% %D_ARGS% "-Djava.library.path=%LIB_DIR%" "-Dsun.java2d.noddraw=true" "-Dsun.awt.noerasebackground=true" %1 %2 %3 %4 %5 %6 %7 %8 %9 > java-win64.log 2>&1
+REM %J2RE_HOME%\bin\java -classpath %CP_ALL% %X_ARGS% %D_ARGS% "-Dsun.java2d.noddraw=true" "-Dsun.awt.noerasebackground=true" %1 %2 %3 %4 %5 %6 %7 %8 %9 > java-win64.log 2>&1
diff --git a/make/scripts/make.gluegen.all-host-linux.sh b/make/scripts/make.gluegen.all-host-linux.sh
new file mode 100755
index 0000000..7ec33a5
--- /dev/null
+++ b/make/scripts/make.gluegen.all-host-linux.sh
@@ -0,0 +1,20 @@
+#! /bin/sh
+
+SDIR=`dirname $0`
+
+$SDIR/make.gluegen.all.android-aarch64-cross.sh && \
+$SDIR/make.gluegen.all.android-armv6-cross.sh && \
+$SDIR/make.gluegen.all.android-x86-cross.sh && \
+$SDIR/make.gluegen.all.linux-aarch64-cross.sh && \
+$SDIR/make.gluegen.all.linux-armv6hf-cross.sh && \
+$SDIR/make.gluegen.all.linux-x86.sh && \
+$SDIR/make.gluegen.all.linux-x86_64.sh
+
+# $SDIR/make.gluegen.all.macosx.sh
+# $SDIR/make.gluegen.all.ios.amd64.sh
+# $SDIR/make.gluegen.all.ios.arm64.sh
+# $SDIR/make.gluegen.all.win32.bat
+# $SDIR/make.gluegen.all.win64.bat
+# $SDIR/make.gluegen.all.linux-ppc64le.sh
+# $SDIR/make.gluegen.all.linux-armv6hf.sh
+# $SDIR/make.gluegen.all.linux-aarch64.sh
diff --git a/make/scripts/make.gluegen.all-host-macos.sh b/make/scripts/make.gluegen.all-host-macos.sh
new file mode 100755
index 0000000..625506a
--- /dev/null
+++ b/make/scripts/make.gluegen.all-host-macos.sh
@@ -0,0 +1,16 @@
+#! /bin/sh
+
+SDIR=`dirname $0`
+
+$SDIR/make.gluegen.all.macosx.sh && \
+$SDIR/make.gluegen.all.ios.amd64.sh && \
+$SDIR/make.gluegen.all.ios.arm64.sh
+
+# $SDIR/make.gluegen.all.macosx.sh
+# $SDIR/make.gluegen.all.ios.amd64.sh
+# $SDIR/make.gluegen.all.ios.arm64.sh
+# $SDIR/make.gluegen.all.win32.bat
+# $SDIR/make.gluegen.all.win64.bat
+# $SDIR/make.gluegen.all.linux-ppc64le.sh
+# $SDIR/make.gluegen.all.linux-armv6hf.sh
+# $SDIR/make.gluegen.all.linux-aarch64.sh
diff --git a/make/scripts/make.gluegen.all.android-aarch64-cross.sh b/make/scripts/make.gluegen.all.android-aarch64-cross.sh
new file mode 100755
index 0000000..78ccb08
--- /dev/null
+++ b/make/scripts/make.gluegen.all.android-aarch64-cross.sh
@@ -0,0 +1,59 @@
+#! /bin/sh
+
+SDIR=`dirname $0`
+
+if [ -e ${SDIR}/setenv-build-jogamp-x86_64.sh ] ; then
+ . ${SDIR}/setenv-build-jogamp-x86_64.sh
+fi
+
+LOGF=make.gluegen.all.android-aarch64-cross.log
+rm -f ${LOGF}
+
+export ANDROID_HOME=/opt-linux-x86_64/android-sdk-linux_x86_64
+export ANDROID_API_LEVEL=24
+export ANDROID_HOST_TAG=linux-x86_64
+export ANDROID_ABI=arm64-v8a
+
+if [ -e ${SDIR}/setenv-android-tools.sh ] ; then
+ . ${SDIR}/setenv-android-tools.sh >> $LOGF 2>&1
+else
+ echo "${SDIR}/setenv-android-tools.sh doesn't exist!" 2>&1 | tee -a ${LOGF}
+ exit 1
+fi
+
+export GLUEGEN_CPPTASKS_FILE="lib/gluegen-cpptasks-android-aarch64.xml"
+export PATH=${ANDROID_TOOLCHAIN_ROOT}/${ANDROID_TOOLCHAIN_NAME}/bin:${ANDROID_TOOLCHAIN_ROOT}/bin:${ANDROID_HOME}/platform-tools:${ANDROID_BUILDTOOLS_ROOT}:${PATH}
+echo PATH ${PATH} 2>&1 | tee -a ${LOGF}
+echo clang `which clang` 2>&1 | tee -a ${LOGF}
+
+export NODE_LABEL=.
+
+export HOST_UID=jogamp
+# jogamp02 - 10.1.0.122
+export HOST_IP=10.1.0.122
+export HOST_RSYNC_ROOT=PROJECTS/JogAmp
+
+export TARGET_UID=jogamp
+export TARGET_IP=panda02
+#export TARGET_IP=jautab03
+#export TARGET_IP=jauphone04
+export TARGET_ADB_PORT=5555
+# needs executable bit (probably su)
+export TARGET_ROOT=/data/projects
+export TARGET_ANT_HOME=/usr/share/ant
+
+export SOURCE_LEVEL=1.8
+export TARGET_LEVEL=1.8
+export TARGET_RT_JAR=/opt-share/jre1.8.0_212/lib/rt.jar
+
+#export JUNIT_DISABLED="true"
+#export JUNIT_RUN_ARG0="-Dnewt.test.Screen.disableScreenMode"
+
+#export JOGAMP_JAR_CODEBASE="Codebase: *.jogamp.org"
+export JOGAMP_JAR_CODEBASE="Codebase: *.goethel.localnet"
+
+#BUILD_ARCHIVE=true \
+ant \
+ -Drootrel.build=build-android-aarch64 \
+ -Dgcc.compat.compiler=clang \
+ $* 2>&1 | tee -a ${LOGF}
diff --git a/make/scripts/make.gluegen.all.android-armv6-cross.sh b/make/scripts/make.gluegen.all.android-armv6-cross.sh
index 8c9f0f4..ebbd84c 100755
--- a/make/scripts/make.gluegen.all.android-armv6-cross.sh
+++ b/make/scripts/make.gluegen.all.android-armv6-cross.sh
@@ -2,16 +2,36 @@
SDIR=`dirname $0`
-if [ -e $SDIR/setenv-build-jogl-x86_64.sh ] ; then
- . $SDIR/setenv-build-jogl-x86_64.sh
+if [ -e ${SDIR}/setenv-build-jogamp-x86_64.sh ] ; then
+ . ${SDIR}/setenv-build-jogamp-x86_64.sh
fi
+LOGF=make.gluegen.all.android-armv6-cross.log
+rm -f ${LOGF}
+
+export ANDROID_HOME=/opt-linux-x86_64/android-sdk-linux_x86_64
+export ANDROID_API_LEVEL=24
+export ANDROID_HOST_TAG=linux-x86_64
+export ANDROID_ABI=armeabi-v7a
+
+if [ -e ${SDIR}/setenv-android-tools.sh ] ; then
+ . ${SDIR}/setenv-android-tools.sh >> $LOGF 2>&1
+else
+ echo "${SDIR}/setenv-android-tools.sh doesn't exist!" 2>&1 | tee -a ${LOGF}
+ exit 1
+fi
+
+export GLUEGEN_CPPTASKS_FILE="lib/gluegen-cpptasks-android-armv6.xml"
+export PATH=${ANDROID_TOOLCHAIN_ROOT}/${ANDROID_TOOLCHAIN_NAME}/bin:${ANDROID_TOOLCHAIN_ROOT}/bin:${ANDROID_HOME}/platform-tools:${ANDROID_BUILDTOOLS_ROOT}:${PATH}
+echo PATH ${PATH} 2>&1 | tee -a ${LOGF}
+echo clang `which clang` 2>&1 | tee -a ${LOGF}
+
export NODE_LABEL=.
export HOST_UID=jogamp
# jogamp02 - 10.1.0.122
export HOST_IP=10.1.0.122
-export HOST_RSYNC_ROOT=PROJECTS/JOGL
+export HOST_RSYNC_ROOT=PROJECTS/JogAmp
export TARGET_UID=jogamp
export TARGET_IP=panda02
@@ -22,82 +42,19 @@ export TARGET_ADB_PORT=5555
export TARGET_ROOT=/data/projects
export TARGET_ANT_HOME=/usr/share/ant
-echo ANDROID_HOME $ANDROID_HOME
-echo NDK_ROOT $NDK_ROOT
-
-if [ -z "$NDK_ROOT" ] ; then
- #
- # Generic android-ndk
- #
- if [ -e /usr/local/android-ndk ] ; then
- NDK_ROOT=/usr/local/android-ndk
- elif [ -e /opt-linux-x86/android-ndk ] ; then
- NDK_ROOT=/opt-linux-x86/android-ndk
- elif [ -e /opt/android-ndk ] ; then
- NDK_ROOT=/opt/android-ndk
- #
- # Specific android-ndk-r8d
- #
- elif [ -e /usr/local/android-ndk-r8d ] ; then
- NDK_ROOT=/usr/local/android-ndk-r8d
- elif [ -e /opt-linux-x86/android-ndk-r8d ] ; then
- NDK_ROOT=/opt-linux-x86/android-ndk-r8d
- elif [ -e /opt/android-ndk-r8d ] ; then
- NDK_ROOT=/opt/android-ndk-r8d
- else
- echo NDK_ROOT is not specified and does not exist in default locations
- exit 1
- fi
-elif [ ! -e $NDK_ROOT ] ; then
- echo NDK_ROOT $NDK_ROOT does not exist
- exit 1
-fi
-export NDK_ROOT
-
-if [ -z "$ANDROID_HOME" ] ; then
- if [ -e /usr/local/android-sdk-linux_x86 ] ; then
- ANDROID_HOME=/usr/local/android-sdk-linux_x86
- elif [ -e /opt-linux-x86/android-sdk-linux_x86 ] ; then
- ANDROID_HOME=/opt-linux-x86/android-sdk-linux_x86
- elif [ -e /opt/android-sdk-linux_x86 ] ; then
- ANDROID_HOME=/opt/android-sdk-linux_x86
- else
- echo ANDROID_HOME is not specified and does not exist in default locations
- exit 1
- fi
-elif [ ! -e $ANDROID_HOME ] ; then
- echo ANDROID_HOME $ANDROID_HOME does not exist
- exit 1
-fi
-export ANDROID_HOME
-
-export ANDROID_VERSION=9
-export SOURCE_LEVEL=1.6
-export TARGET_LEVEL=1.6
-export TARGET_RT_JAR=/opt-share/jre1.6.0_30/lib/rt.jar
-
-#export GCC_VERSION=4.4.3
-export GCC_VERSION=4.7
-HOST_ARCH=linux-x86
-export TARGET_TRIPLE=arm-linux-androideabi
-
-export NDK_TOOLCHAIN_ROOT=$NDK_ROOT/toolchains/${TARGET_TRIPLE}-${GCC_VERSION}/prebuilt/${HOST_ARCH}
-export TARGET_PLATFORM_ROOT=${NDK_ROOT}/platforms/android-${ANDROID_VERSION}/arch-arm
-
-# Need to add toolchain bins to the PATH.
-export PATH="$NDK_TOOLCHAIN_ROOT/$TARGET_TRIPLE/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/build-tools/17.0.0:$PATH"
-
-export GLUEGEN_CPPTASKS_FILE="lib/gluegen-cpptasks-android-armv6.xml"
+export SOURCE_LEVEL=1.8
+export TARGET_LEVEL=1.8
+export TARGET_RT_JAR=/opt-share/jre1.8.0_212/lib/rt.jar
#export JUNIT_DISABLED="true"
#export JUNIT_RUN_ARG0="-Dnewt.test.Screen.disableScreenMode"
-which gcc 2>&1 | tee make.gluegen.all.android-armv6-cross.log
-
#export JOGAMP_JAR_CODEBASE="Codebase: *.jogamp.org"
export JOGAMP_JAR_CODEBASE="Codebase: *.goethel.localnet"
#BUILD_ARCHIVE=true \
ant \
-Drootrel.build=build-android-armv6 \
- $* 2>&1 | tee -a make.gluegen.all.android-armv6-cross.log
+ -Dgcc.compat.compiler=clang \
+ $* 2>&1 | tee -a ${LOGF}
+
diff --git a/make/scripts/make.gluegen.all.android-armv7-cross.sh b/make/scripts/make.gluegen.all.android-armv7-cross.sh
deleted file mode 100755
index f79b904..0000000
--- a/make/scripts/make.gluegen.all.android-armv7-cross.sh
+++ /dev/null
@@ -1,101 +0,0 @@
-#! /bin/sh
-
-if [ -e $SDIR/setenv-build-jogl-x86_64.sh ] ; then
- . $SDIR/setenv-build-jogl-x86_64.sh
-fi
-
-export NODE_LABEL=.
-
-export HOST_UID=jogamp
-# jogamp02 - 10.1.0.122
-export HOST_IP=10.1.0.122
-export HOST_RSYNC_ROOT=PROJECTS/JOGL
-
-export TARGET_UID=jogamp
-export TARGET_IP=panda02
-#export TARGET_IP=jautab03
-#export TARGET_IP=jauphone04
-export TARGET_ADB_PORT=5555
-# needs executable bit (probably su)
-export TARGET_ROOT=/data/projects
-export TARGET_ANT_HOME=/usr/share/ant
-
-echo ANDROID_HOME $ANDROID_HOME
-echo NDK_ROOT $NDK_ROOT
-
-if [ -z "$NDK_ROOT" ] ; then
- #
- # Generic android-ndk
- #
- if [ -e /usr/local/android-ndk ] ; then
- NDK_ROOT=/usr/local/android-ndk
- elif [ -e /opt-linux-x86/android-ndk ] ; then
- NDK_ROOT=/opt-linux-x86/android-ndk
- elif [ -e /opt/android-ndk ] ; then
- NDK_ROOT=/opt/android-ndk
- #
- # Specific android-ndk-r8d
- #
- elif [ -e /usr/local/android-ndk-r8d ] ; then
- NDK_ROOT=/usr/local/android-ndk-r8d
- elif [ -e /opt-linux-x86/android-ndk-r8d ] ; then
- NDK_ROOT=/opt-linux-x86/android-ndk-r8d
- elif [ -e /opt/android-ndk-r8d ] ; then
- NDK_ROOT=/opt/android-ndk-r8d
- else
- echo NDK_ROOT is not specified and does not exist in default locations
- exit 1
- fi
-elif [ ! -e $NDK_ROOT ] ; then
- echo NDK_ROOT $NDK_ROOT does not exist
- exit 1
-fi
-export NDK_ROOT
-
-if [ -z "$ANDROID_HOME" ] ; then
- if [ -e /usr/local/android-sdk-linux_x86 ] ; then
- ANDROID_HOME=/usr/local/android-sdk-linux_x86
- elif [ -e /opt-linux-x86/android-sdk-linux_x86 ] ; then
- ANDROID_HOME=/opt-linux-x86/android-sdk-linux_x86
- elif [ -e /opt/android-sdk-linux_x86 ] ; then
- ANDROID_HOME=/opt/android-sdk-linux_x86
- else
- echo ANDROID_HOME is not specified and does not exist in default locations
- exit 1
- fi
-elif [ ! -e $ANDROID_HOME ] ; then
- echo ANDROID_HOME $ANDROID_HOME does not exist
- exit 1
-fi
-export ANDROID_HOME
-
-export ANDROID_VERSION=9
-export SOURCE_LEVEL=1.6
-export TARGET_LEVEL=1.6
-export TARGET_RT_JAR=/opt-share/jre1.6.0_30/lib/rt.jar
-
-#export GCC_VERSION=4.4.3
-export GCC_VERSION=4.7
-HOST_ARCH=linux-x86
-export TARGET_TRIPLE=arm-linux-androideabi
-
-export NDK_TOOLCHAIN_ROOT=$NDK_ROOT/toolchains/${TARGET_TRIPLE}-${GCC_VERSION}/prebuilt/${HOST_ARCH}
-export TARGET_PLATFORM_ROOT=${NDK_ROOT}/platforms/android-${ANDROID_VERSION}/arch-arm
-
-# Need to add toolchain bins to the PATH.
-export PATH="$NDK_TOOLCHAIN_ROOT/$TARGET_TRIPLE/bin:$ANDROID_HOME/platform-tools:$PATH"
-
-export GLUEGEN_CPPTASKS_FILE="lib/gluegen-cpptasks-android-armv7.xml"
-
-#export JUNIT_DISABLED="true"
-#export JUNIT_RUN_ARG0="-Dnewt.test.Screen.disableScreenMode"
-
-which gcc 2>&1 | tee make.gluegen.all.android-armv7-cross.log
-
-#export JOGAMP_JAR_CODEBASE="Codebase: *.jogamp.org"
-export JOGAMP_JAR_CODEBASE="Codebase: *.goethel.localnet"
-
-#BUILD_ARCHIVE=true \
-ant \
- -Drootrel.build=build-android-armv7 \
- $* 2>&1 | tee -a make.gluegen.all.android-armv7-cross.log
diff --git a/make/scripts/make.gluegen.all.android-x86-cross.sh b/make/scripts/make.gluegen.all.android-x86-cross.sh
new file mode 100755
index 0000000..eb0e15b
--- /dev/null
+++ b/make/scripts/make.gluegen.all.android-x86-cross.sh
@@ -0,0 +1,60 @@
+#! /bin/sh
+
+SDIR=`dirname $0`
+
+if [ -e ${SDIR}/setenv-build-jogamp-x86_64.sh ] ; then
+ . ${SDIR}/setenv-build-jogamp-x86_64.sh
+fi
+
+LOGF=make.gluegen.all.android-x86-cross.log
+rm -f ${LOGF}
+
+export ANDROID_HOME=/opt-linux-x86_64/android-sdk-linux_x86_64
+export ANDROID_API_LEVEL=24
+export ANDROID_HOST_TAG=linux-x86_64
+export ANDROID_ABI=x86
+
+if [ -e ${SDIR}/setenv-android-tools.sh ] ; then
+ . ${SDIR}/setenv-android-tools.sh >> $LOGF 2>&1
+else
+ echo "${SDIR}/setenv-android-tools.sh doesn't exist!" 2>&1 | tee -a ${LOGF}
+ exit 1
+fi
+
+export GLUEGEN_CPPTASKS_FILE="lib/gluegen-cpptasks-android-x86.xml"
+export PATH=${ANDROID_TOOLCHAIN_ROOT}/${ANDROID_TOOLCHAIN_NAME}/bin:${ANDROID_TOOLCHAIN_ROOT}/bin:${ANDROID_HOME}/platform-tools:${ANDROID_BUILDTOOLS_ROOT}:${PATH}
+echo PATH ${PATH} 2>&1 | tee -a ${LOGF}
+echo clang `which clang` 2>&1 | tee -a ${LOGF}
+
+export NODE_LABEL=.
+
+export HOST_UID=jogamp
+# jogamp02 - 10.1.0.122
+export HOST_IP=10.1.0.122
+export HOST_RSYNC_ROOT=PROJECTS/JogAmp
+
+export TARGET_UID=jogamp
+export TARGET_IP=panda02
+#export TARGET_IP=jautab03
+#export TARGET_IP=jauphone04
+export TARGET_ADB_PORT=5555
+# needs executable bit (probably su)
+export TARGET_ROOT=/data/projects
+export TARGET_ANT_HOME=/usr/share/ant
+
+export SOURCE_LEVEL=1.8
+export TARGET_LEVEL=1.8
+export TARGET_RT_JAR=/opt-share/jre1.8.0_212/lib/rt.jar
+
+#export JUNIT_DISABLED="true"
+#export JUNIT_RUN_ARG0="-Dnewt.test.Screen.disableScreenMode"
+
+#export JOGAMP_JAR_CODEBASE="Codebase: *.jogamp.org"
+export JOGAMP_JAR_CODEBASE="Codebase: *.goethel.localnet"
+
+#BUILD_ARCHIVE=true \
+ant \
+ -Drootrel.build=build-android-x86 \
+ -Dgcc.compat.compiler=clang \
+ $* 2>&1 | tee -a ${LOGF}
+
diff --git a/make/scripts/make.gluegen.all.generic.sh b/make/scripts/make.gluegen.all.generic.sh
index d212a8b..3094842 100755
--- a/make/scripts/make.gluegen.all.generic.sh
+++ b/make/scripts/make.gluegen.all.generic.sh
@@ -14,9 +14,9 @@
# -Dc.compiler.debug=true \
# -Djavacdebuglevel="source,lines,vars" \
-export SOURCE_LEVEL=1.6
-export TARGET_LEVEL=1.6
-export TARGET_RT_JAR=/opt-share/jre1.6.0_30/lib/rt.jar
+export SOURCE_LEVEL=1.8
+export TARGET_LEVEL=1.8
+export TARGET_RT_JAR=/opt-share/jre1.8.0_212/lib/rt.jar
#export JOGAMP_JAR_CODEBASE="Codebase: *.jogamp.org"
export JOGAMP_JAR_CODEBASE="Codebase: *.goethel.localnet"
diff --git a/make/scripts/make.gluegen.all.ios.amd64.sh b/make/scripts/make.gluegen.all.ios.amd64.sh
new file mode 100755
index 0000000..ddc0fd7
--- /dev/null
+++ b/make/scripts/make.gluegen.all.ios.amd64.sh
@@ -0,0 +1,36 @@
+#! /bin/sh
+
+if [ -e /usr/local/etc/profile.ant ] ; then
+ . /usr/local/etc/profile.ant
+fi
+
+# -Dc.compiler.debug=true
+#
+# -Dtarget.sourcelevel=1.6 \
+# -Dtarget.targetlevel=1.6 \
+# -Dtarget.rt.jar=/opt-share/jre1.6.0_30/lib/rt.jar \
+
+# Force OSX SDK 10.6, if desired
+# export SDKROOT=macosx10.6
+
+export SDKROOT=iphonesimulator13.2
+xcrun --show-sdk-path
+
+JAVA_HOME=`/usr/libexec/java_home -version 17`
+PATH=$JAVA_HOME/bin:$PATH
+export JAVA_HOME PATH
+which java
+java -version
+
+export SOURCE_LEVEL=1.8
+export TARGET_LEVEL=1.8
+export TARGET_RT_JAR=/usr/local/jre1.8.0_212/lib/rt.jar
+
+export GLUEGEN_CPPTASKS_FILE=make/lib/gluegen-cpptasks-ios-amd64.xml
+
+#export JOGAMP_JAR_CODEBASE="Codebase: *.jogamp.org"
+export JOGAMP_JAR_CODEBASE="Codebase: *.goethel.localnet"
+
+ant \
+ -Drootrel.build=build-ios-amd64 \
+ $* 2>&1 | tee make.gluegen.all.ios-amd64.log
diff --git a/make/scripts/make.gluegen.all.ios.arm64.sh b/make/scripts/make.gluegen.all.ios.arm64.sh
new file mode 100755
index 0000000..13c9469
--- /dev/null
+++ b/make/scripts/make.gluegen.all.ios.arm64.sh
@@ -0,0 +1,36 @@
+#! /bin/sh
+
+if [ -e /usr/local/etc/profile.ant ] ; then
+ . /usr/local/etc/profile.ant
+fi
+
+# -Dc.compiler.debug=true
+#
+# -Dtarget.sourcelevel=1.6 \
+# -Dtarget.targetlevel=1.6 \
+# -Dtarget.rt.jar=/opt-share/jre1.6.0_30/lib/rt.jar \
+
+# Force OSX SDK 10.6, if desired
+# export SDKROOT=macosx10.6
+
+export SDKROOT=iphoneos13.2
+xcrun --show-sdk-path
+
+JAVA_HOME=`/usr/libexec/java_home -version 17`
+PATH=$JAVA_HOME/bin:$PATH
+export JAVA_HOME PATH
+which java
+java -version
+
+export SOURCE_LEVEL=1.8
+export TARGET_LEVEL=1.8
+export TARGET_RT_JAR=/usr/local/jre1.8.0_212/lib/rt.jar
+
+export GLUEGEN_CPPTASKS_FILE=make/lib/gluegen-cpptasks-ios-aarch64.xml
+
+#export JOGAMP_JAR_CODEBASE="Codebase: *.jogamp.org"
+export JOGAMP_JAR_CODEBASE="Codebase: *.goethel.localnet"
+
+ant \
+ -Drootrel.build=build-ios-arm64 \
+ $* 2>&1 | tee make.gluegen.all.ios-arm64.log
diff --git a/make/scripts/make.gluegen.all.linux-aarch64-cross.sh b/make/scripts/make.gluegen.all.linux-aarch64-cross.sh
new file mode 100755
index 0000000..1d1f8b5
--- /dev/null
+++ b/make/scripts/make.gluegen.all.linux-aarch64-cross.sh
@@ -0,0 +1,39 @@
+#! /bin/sh
+
+SDIR=`dirname $0`
+
+if [ -e $SDIR/setenv-build-jogamp-x86_64.sh ] ; then
+ . $SDIR/setenv-build-jogamp-x86_64.sh
+fi
+
+# aarch64-linux-gnueabi == aarch64 triplet
+PATH=`pwd`/lib/toolchain/aarch64-linux-gnueabi/bin:$PATH
+export PATH
+
+# -Dc.compiler.debug=true
+# -Dgluegen.cpptasks.detected.os=true \
+# -DisUnix=true \
+# -DisLinux=true \
+# -DisLinuxARM64=true \
+# -DisX11=true \
+
+export TARGET_PLATFORM_SYSROOT=`gcc --print-sysroot`
+export TARGET_PLATFORM_USRROOT=/opt-linux-arm64
+export TARGET_PLATFORM_USRLIBS=$TARGET_PLATFORM_USRROOT/usr/lib
+export TARGET_JAVA_LIBS=$TARGET_PLATFORM_USRROOT/jre/lib/aarch64
+
+export GLUEGEN_CPPTASKS_FILE="lib/gluegen-cpptasks-linux-aarch64.xml"
+
+#export JUNIT_DISABLED="true"
+export JUNIT_RUN_ARG0="-Dnewt.test.Screen.disableScreenMode"
+
+export SOURCE_LEVEL=1.8
+export TARGET_LEVEL=1.8
+export TARGET_RT_JAR=/opt-share/jre1.8.0_212/lib/rt.jar
+
+#export JOGAMP_JAR_CODEBASE="Codebase: *.jogamp.org"
+export JOGAMP_JAR_CODEBASE="Codebase: *.goethel.localnet"
+
+ant \
+ -Drootrel.build=build-linux-aarch64 \
+ $* 2>&1 | tee make.gluegen.all.linux-aarch64-cross.log
diff --git a/make/scripts/make.gluegen.all.linux-aarch64.sh b/make/scripts/make.gluegen.all.linux-aarch64.sh
new file mode 100755
index 0000000..6f1bae0
--- /dev/null
+++ b/make/scripts/make.gluegen.all.linux-aarch64.sh
@@ -0,0 +1,26 @@
+#! /bin/sh
+
+# -Dc.compiler.debug=true
+# -Dgluegen.cpptasks.detected.os=true \
+# -DisUnix=true \
+# -DisLinux=true \
+# -DisLinuxX86=true \
+# -DisX11=true \
+
+# aarch64-linux-gnue == aarch64 triplet
+export TARGET_PLATFORM_USRROOT=
+export TARGET_PLATFORM_USRLIBS=$TARGET_PLATFORM_USRROOT/usr/lib/aarch64-linux-gnu
+export TARGET_JAVA_LIBS=$TARGET_PLATFORM_USRROOT/usr/lib/jvm/java-11-openjdk-aarch64/jre/lib/aarch64
+
+export GLUEGEN_CPPTASKS_FILE="lib/gluegen-cpptasks-linux-aarch64-ontarget.xml"
+
+export SOURCE_LEVEL=1.8
+export TARGET_LEVEL=1.8
+export TARGET_RT_JAR=/opt-share/jre1.8.0_212/lib/rt.jar
+
+#export JOGAMP_JAR_CODEBASE="Codebase: *.jogamp.org"
+export JOGAMP_JAR_CODEBASE="Codebase: *.goethel.localnet"
+
+ant \
+ -Drootrel.build=build-linux-aarch64 \
+ $* 2>&1 | tee make.gluegen.all.linux-aarch64.log
diff --git a/make/scripts/make.gluegen.all.linux-armv6-cross.sh b/make/scripts/make.gluegen.all.linux-armv6-cross.sh
deleted file mode 100755
index c8c8b8a..0000000
--- a/make/scripts/make.gluegen.all.linux-armv6-cross.sh
+++ /dev/null
@@ -1,51 +0,0 @@
-#! /bin/sh
-
-SDIR=`dirname $0`
-
-if [ -e $SDIR/setenv-build-jogl-x86_64.sh ] ; then
- . $SDIR/setenv-build-jogl-x86_64.sh
-fi
-
-# arm-linux-gnueabi == armel triplet
-PATH=`pwd`/lib/toolchain/armsf-linux-gnueabi/bin:$PATH
-export PATH
-
-# -Dc.compiler.debug=true
-# -Dgluegen.cpptasks.detected.os=true \
-# -DisUnix=true \
-# -DisLinux=true \
-# -DisLinuxARMv6=true \
-# -DisX11=false \
-
-export NODE_LABEL=.
-
-export HOST_UID=jogamp
-export HOST_IP=jogamp02
-export HOST_RSYNC_ROOT=PROJECTS/JOGL
-
-export TARGET_UID=jogamp
-export TARGET_IP=panda01
-export TARGET_ROOT=/home/jogamp/projects-cross
-export TARGET_ANT_HOME=/usr/share/ant
-
-export TARGET_PLATFORM_ROOT=/opt-linux-armv6-armel
-export TARGET_PLATFORM_LIBS=$TARGET_PLATFORM_ROOT/usr/lib
-export TARGET_JAVA_LIBS=$TARGET_PLATFORM_ROOT/jre/lib/arm
-
-export GLUEGEN_CPPTASKS_FILE="lib/gluegen-cpptasks-linux-armv6.xml"
-
-#export JUNIT_DISABLED="true"
-export JUNIT_RUN_ARG0="-Dnewt.test.Screen.disableScreenMode"
-
-export SOURCE_LEVEL=1.6
-export TARGET_LEVEL=1.6
-export TARGET_RT_JAR=/opt-share/jre1.6.0_30/lib/rt.jar
-
-#export JOGAMP_JAR_CODEBASE="Codebase: *.jogamp.org"
-export JOGAMP_JAR_CODEBASE="Codebase: *.goethel.localnet"
-
-ant \
- -Drootrel.build=build-linux-armv6 \
- $* 2>&1 | tee make.gluegen.all.linux-armv6-cross.log
-
-
diff --git a/make/scripts/make.gluegen.all.linux-armv6.sh b/make/scripts/make.gluegen.all.linux-armv6.sh
deleted file mode 100755
index 0ebf550..0000000
--- a/make/scripts/make.gluegen.all.linux-armv6.sh
+++ /dev/null
@@ -1,21 +0,0 @@
-#! /bin/sh
-
-# -Dc.compiler.debug=true
-# -Dgluegen.cpptasks.detected.os=true \
-# -DisUnix=true \
-# -DisLinux=true \
-# -DisLinuxX86=true \
-# -DisX11=true \
-
-# arm-linux-gnueabi == armel triplet
-export TARGET_PLATFORM_LIBS=/usr/lib/arm-linux-gnueabi
-export TARGET_JAVA_LIBS=/usr/lib/jvm/default-java/jre/lib/arm
-
-export GLUEGEN_CPPTASKS_FILE="lib/gluegen-cpptasks-linux-armv6.xml"
-
-#export JOGAMP_JAR_CODEBASE="Codebase: *.jogamp.org"
-export JOGAMP_JAR_CODEBASE="Codebase: *.goethel.localnet"
-
-ant \
- -Drootrel.build=build-linux-armv6 \
- $* 2>&1 | tee make.gluegen.all.linux-armv6.log
diff --git a/make/scripts/make.gluegen.all.linux-armv6hf-cross.sh b/make/scripts/make.gluegen.all.linux-armv6hf-cross.sh
index a3f64a5..de69749 100755
--- a/make/scripts/make.gluegen.all.linux-armv6hf-cross.sh
+++ b/make/scripts/make.gluegen.all.linux-armv6hf-cross.sh
@@ -2,8 +2,8 @@
SDIR=`dirname $0`
-if [ -e $SDIR/setenv-build-jogl-x86_64.sh ] ; then
- . $SDIR/setenv-build-jogl-x86_64.sh
+if [ -e $SDIR/setenv-build-jogamp-x86_64.sh ] ; then
+ . $SDIR/setenv-build-jogamp-x86_64.sh
fi
# arm-linux-gnueabihf == armhf triplet
@@ -21,25 +21,26 @@ export NODE_LABEL=.
export HOST_UID=jogamp
export HOST_IP=jogamp02
-export HOST_RSYNC_ROOT=PROJECTS/JOGL
+export HOST_RSYNC_ROOT=PROJECTS/JogAmp
export TARGET_UID=jogamp
export TARGET_IP=panda02
export TARGET_ROOT=/home/jogamp/projects-cross
export TARGET_ANT_HOME=/usr/share/ant
-export TARGET_PLATFORM_ROOT=/opt-linux-armv6-armhf
-export TARGET_PLATFORM_LIBS=$TARGET_PLATFORM_ROOT/usr/lib
-export TARGET_JAVA_LIBS=$TARGET_PLATFORM_ROOT/jre/lib/arm
+export TARGET_PLATFORM_SYSROOT=`gcc --print-sysroot`
+export TARGET_PLATFORM_USRROOT=/opt-linux-armv6-armhf
+export TARGET_PLATFORM_USRLIBS=$TARGET_PLATFORM_USRROOT/usr/lib
+export TARGET_JAVA_LIBS=$TARGET_PLATFORM_USRROOT/jre/lib/arm
export GLUEGEN_CPPTASKS_FILE="lib/gluegen-cpptasks-linux-armv6hf.xml"
#export JUNIT_DISABLED="true"
export JUNIT_RUN_ARG0="-Dnewt.test.Screen.disableScreenMode"
-export SOURCE_LEVEL=1.6
-export TARGET_LEVEL=1.6
-export TARGET_RT_JAR=/opt-share/jre1.6.0_30/lib/rt.jar
+export SOURCE_LEVEL=1.8
+export TARGET_LEVEL=1.8
+export TARGET_RT_JAR=/opt-share/jre1.8.0_212/lib/rt.jar
#export JOGAMP_JAR_CODEBASE="Codebase: *.jogamp.org"
export JOGAMP_JAR_CODEBASE="Codebase: *.goethel.localnet"
diff --git a/make/scripts/make.gluegen.all.linux-armv6hf.sh b/make/scripts/make.gluegen.all.linux-armv6hf.sh
index abf8ce1..200fe87 100755
--- a/make/scripts/make.gluegen.all.linux-armv6hf.sh
+++ b/make/scripts/make.gluegen.all.linux-armv6hf.sh
@@ -8,10 +8,15 @@
# -DisX11=true \
# arm-linux-gnueabihf == armhf triplet
-export TARGET_PLATFORM_LIBS=/usr/lib/arm-linux-gnueabihf
-export TARGET_JAVA_LIBS=/usr/lib/jvm/java-6-openjdk-armhf/jre/lib/arm
+export TARGET_PLATFORM_USRROOT=
+export TARGET_PLATFORM_USRLIBS=$TARGET_PLATFORM_USRROOT/usr/lib/arm-linux-gnueabihf
+export TARGET_JAVA_LIBS=$TARGET_PLATFORM_USRROOT/usr/lib/jvm/java-11-openjdk-armhf/jre/lib/arm
-export GLUEGEN_CPPTASKS_FILE="lib/gluegen-cpptasks-linux-armv6hf.xml"
+export GLUEGEN_CPPTASKS_FILE="lib/gluegen-cpptasks-linux-armv6hf-ontarget.xml"
+
+export SOURCE_LEVEL=1.8
+export TARGET_LEVEL=1.8
+export TARGET_RT_JAR=/opt-share/jre1.8.0_212/lib/rt.jar
#export JOGAMP_JAR_CODEBASE="Codebase: *.jogamp.org"
export JOGAMP_JAR_CODEBASE="Codebase: *.goethel.localnet"
diff --git a/make/scripts/make.gluegen.all.linux-ppc64le.sh b/make/scripts/make.gluegen.all.linux-ppc64le.sh
new file mode 100644
index 0000000..f921eda
--- /dev/null
+++ b/make/scripts/make.gluegen.all.linux-ppc64le.sh
@@ -0,0 +1,28 @@
+#! /bin/sh
+
+# -Dc.compiler.debug=true \
+# -Dgluegen.cpptasks.detected.os=true \
+# -DisUnix=true \
+# -DisLinux=true \
+# -DisLinuxX86=true \
+# -DisX11=true \
+
+MACHINE=ppc64le
+ARCH=ppc64el
+TRIPLET=powerpc64le-linux-gnu
+
+export TARGET_PLATFORM_USRLIBS=/usr/lib/$TRIPLET
+export TARGET_JAVA_LIBS=/usr/lib/jvm/java-7-openjdk-$ARCH/jre/lib/$MACHINE
+
+export GLUEGEN_CPPTASKS_FILE="lib/gluegen-cpptasks-linux-$MACHINE.xml"
+
+export SOURCE_LEVEL=1.8
+export TARGET_LEVEL=1.8
+export TARGET_RT_JAR=/opt-share/jre1.8.0_212/lib/rt.jar
+
+#export JOGAMP_JAR_CODEBASE="Codebase: *.jogamp.org"
+export JOGAMP_JAR_CODEBASE="Codebase: *.goethel.localnet"
+
+ant \
+ -Drootrel.build=build-linux-$MACHINE \
+ $* 2>&1 | tee make.gluegen.all.linux-$MACHINE.log
diff --git a/make/scripts/make.gluegen.all.linux-x86-clang.sh b/make/scripts/make.gluegen.all.linux-x86-clang.sh
index 2e56da1..46938b7 100755
--- a/make/scripts/make.gluegen.all.linux-x86-clang.sh
+++ b/make/scripts/make.gluegen.all.linux-x86-clang.sh
@@ -2,8 +2,8 @@
SDIR=`dirname $0`
-if [ -e $SDIR/setenv-build-jogl-x86.sh ] ; then
- . $SDIR/setenv-build-jogl-x86.sh
+if [ -e $SDIR/setenv-build-jogamp-x86.sh ] ; then
+ . $SDIR/setenv-build-jogamp-x86.sh
fi
# -Dc.compiler.debug=true
@@ -15,9 +15,9 @@ fi
# -Dgluegen-cpptasks.file=`pwd`/lib/gluegen-cpptasks-linux-32bit.xml \
#
-export SOURCE_LEVEL=1.6
-export TARGET_LEVEL=1.6
-export TARGET_RT_JAR=/opt-share/jre1.6.0_30/lib/rt.jar
+export SOURCE_LEVEL=1.8
+export TARGET_LEVEL=1.8
+export TARGET_RT_JAR=/opt-share/jre1.8.0_212/lib/rt.jar
export GLUEGEN_PROPERTIES_FILE="lib/gluegen-clang.properties"
# or -Dgcc.compat.compiler=clang
diff --git a/make/scripts/make.gluegen.all.linux-x86.sh b/make/scripts/make.gluegen.all.linux-x86.sh
index 6130e13..aa5ffd9 100755
--- a/make/scripts/make.gluegen.all.linux-x86.sh
+++ b/make/scripts/make.gluegen.all.linux-x86.sh
@@ -2,8 +2,8 @@
SDIR=`dirname $0`
-if [ -e $SDIR/setenv-build-jogl-x86.sh ] ; then
- . $SDIR/setenv-build-jogl-x86.sh
+if [ -e $SDIR/setenv-build-jogamp-x86.sh ] ; then
+ . $SDIR/setenv-build-jogamp-x86.sh
fi
# -Dc.compiler.debug=true
@@ -15,9 +15,9 @@ fi
# -Dgluegen-cpptasks.file=`pwd`/lib/gluegen-cpptasks-linux-32bit.xml \
#
-export SOURCE_LEVEL=1.6
-export TARGET_LEVEL=1.6
-export TARGET_RT_JAR=/opt-share/jre1.6.0_30/lib/rt.jar
+export SOURCE_LEVEL=1.8
+export TARGET_LEVEL=1.8
+export TARGET_RT_JAR=/opt-share/jre1.8.0_212/lib/rt.jar
#export JOGAMP_JAR_CODEBASE="Codebase: *.jogamp.org"
export JOGAMP_JAR_CODEBASE="Codebase: *.goethel.localnet"
diff --git a/make/scripts/make.gluegen.all.linux-x86_64-clang.sh b/make/scripts/make.gluegen.all.linux-x86_64-clang.sh
index 99aec47..487305e 100755
--- a/make/scripts/make.gluegen.all.linux-x86_64-clang.sh
+++ b/make/scripts/make.gluegen.all.linux-x86_64-clang.sh
@@ -2,8 +2,8 @@
SDIR=`dirname $0`
-if [ -e $SDIR/setenv-build-jogl-x86_64.sh ] ; then
- . $SDIR/setenv-build-jogl-x86_64.sh
+if [ -e $SDIR/setenv-build-jogamp-x86_64.sh ] ; then
+ . $SDIR/setenv-build-jogamp-x86_64.sh
fi
# -Dc.compiler.debug=true
@@ -20,9 +20,9 @@ fi
# -Dc.compiler.debug=true \
# -Djavacdebuglevel="source,lines,vars" \
-export SOURCE_LEVEL=1.6
-export TARGET_LEVEL=1.6
-export TARGET_RT_JAR=/opt-share/jre1.6.0_30/lib/rt.jar
+export SOURCE_LEVEL=1.8
+export TARGET_LEVEL=1.8
+export TARGET_RT_JAR=/opt-share/jre1.8.0_212/lib/rt.jar
export GLUEGEN_PROPERTIES_FILE="lib/gluegen-clang.properties"
# or -Dgcc.compat.compiler=clang
diff --git a/make/scripts/make.gluegen.all.linux-x86_64.sh b/make/scripts/make.gluegen.all.linux-x86_64.sh
index 60e35d6..aaac667 100755
--- a/make/scripts/make.gluegen.all.linux-x86_64.sh
+++ b/make/scripts/make.gluegen.all.linux-x86_64.sh
@@ -2,8 +2,11 @@
SDIR=`dirname $0`
-if [ -e $SDIR/setenv-build-jogl-x86_64.sh ] ; then
- . $SDIR/setenv-build-jogl-x86_64.sh
+# export J2RE_HOME=/usr/lib/jvm/java-11-openjdk-amd64
+# export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
+
+if [ -e $SDIR/setenv-build-jogamp-x86_64.sh ] ; then
+ . $SDIR/setenv-build-jogamp-x86_64.sh
fi
# -Dc.compiler.debug=true
@@ -13,16 +16,12 @@ fi
# -DisLinuxAMD64=true \
# -DisX11=true \
#
-# -Dtarget.sourcelevel=1.6 \
-# -Dtarget.targetlevel=1.6 \
-# -Dtarget.rt.jar=/opt-share/jre1.6.0_30/lib/rt.jar \
-#
# -Dc.compiler.debug=true \
# -Djavacdebuglevel="source,lines,vars" \
-export SOURCE_LEVEL=1.6
-export TARGET_LEVEL=1.6
-export TARGET_RT_JAR=/opt-share/jre1.6.0_30/lib/rt.jar
+export SOURCE_LEVEL=1.8
+export TARGET_LEVEL=1.8
+export TARGET_RT_JAR=/opt-share/jre1.8.0_212/lib/rt.jar
#export JOGAMP_JAR_CODEBASE="Codebase: *.jogamp.org"
export JOGAMP_JAR_CODEBASE="Codebase: *.goethel.localnet"
diff --git a/make/scripts/make.gluegen.all.macosx-java7.sh b/make/scripts/make.gluegen.all.macosx-java7.sh
deleted file mode 100755
index 3ea0cc3..0000000
--- a/make/scripts/make.gluegen.all.macosx-java7.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#! /bin/sh
-
-if [ -e /opt-share/etc/profile.ant ] ; then
- . /opt-share/etc/profile.ant
-fi
-
-# -Dc.compiler.debug=true
-#
-# -Dtarget.sourcelevel=1.6 \
-# -Dtarget.targetlevel=1.6 \
-# -Dtarget.rt.jar=/opt-share/jre1.6.0_30/lib/rt.jar \
-
-JAVA_HOME=`/usr/libexec/java_home -version 1.7`
-PATH=$JAVA_HOME/bin:$PATH
-export JAVA_HOME PATH
-
-#export JOGAMP_JAR_CODEBASE="Codebase: *.jogamp.org"
-export JOGAMP_JAR_CODEBASE="Codebase: *.goethel.localnet"
-
-ant \
- -Drootrel.build=build-macosx-java7 \
- $* 2>&1 | tee make.gluegen.all.macosx-java7.log
diff --git a/make/scripts/make.gluegen.all.macosx.sh b/make/scripts/make.gluegen.all.macosx.sh
index aa81ee9..9d30807 100755
--- a/make/scripts/make.gluegen.all.macosx.sh
+++ b/make/scripts/make.gluegen.all.macosx.sh
@@ -1,7 +1,7 @@
#! /bin/sh
-if [ -e /opt-share/etc/profile.ant ] ; then
- . /opt-share/etc/profile.ant
+if [ -e /usr/local/etc/profile.ant ] ; then
+ . /usr/local/etc/profile.ant
fi
# -Dc.compiler.debug=true
@@ -10,13 +10,16 @@ fi
# -Dtarget.targetlevel=1.6 \
# -Dtarget.rt.jar=/opt-share/jre1.6.0_30/lib/rt.jar \
-JAVA_HOME=`/usr/libexec/java_home -version 1.7`
+# Force OSX SDK 10.6, if desired
+# export SDKROOT=macosx10.6
+
+JAVA_HOME=`/usr/libexec/java_home -version 17`
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
-export SOURCE_LEVEL=1.6
-export TARGET_LEVEL=1.6
-export TARGET_RT_JAR=/opt-share/jre1.6.0_30/lib/rt.jar
+export SOURCE_LEVEL=1.8
+export TARGET_LEVEL=1.8
+export TARGET_RT_JAR=/usr/local/jre1.8.0_212/lib/rt.jar
#export JOGAMP_JAR_CODEBASE="Codebase: *.jogamp.org"
export JOGAMP_JAR_CODEBASE="Codebase: *.goethel.localnet"
diff --git a/make/scripts/make.gluegen.all.sh b/make/scripts/make.gluegen.all.sh
deleted file mode 100755
index ec97d04..0000000
--- a/make/scripts/make.gluegen.all.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#! /bin/sh
-
-SDIR=`dirname $0`
-
-$SDIR/make.gluegen.all.linux-armv6-cross.sh \
-&& $SDIR/make.gluegen.all.linux-armv6hf-cross.sh \
-&& $SDIR/make.gluegen.all.linux-x86_64.sh \
-&& $SDIR/make.gluegen.all.linux-x86.sh \
-&& $SDIR/make.gluegen.all.android-armv6-cross.sh \
diff --git a/make/scripts/make.gluegen.all.solaris-x86.sh b/make/scripts/make.gluegen.all.solaris-x86.sh
index d791a3c..86aa617 100755
--- a/make/scripts/make.gluegen.all.solaris-x86.sh
+++ b/make/scripts/make.gluegen.all.solaris-x86.sh
@@ -2,8 +2,8 @@
SDIR=`dirname $0`
-if [ -e $SDIR/setenv-build-jogl-x86.sh ] ; then
- . $SDIR/setenv-build-jogl-x86.sh
+if [ -e $SDIR/setenv-build-jogamp-x86.sh ] ; then
+ . $SDIR/setenv-build-jogamp-x86.sh
fi
# -Dc.compiler.debug=true
diff --git a/make/scripts/make.gluegen.all.solaris-x86_64.sh b/make/scripts/make.gluegen.all.solaris-x86_64.sh
index dfd40dc..b74fae2 100755
--- a/make/scripts/make.gluegen.all.solaris-x86_64.sh
+++ b/make/scripts/make.gluegen.all.solaris-x86_64.sh
@@ -2,8 +2,8 @@
SDIR=`dirname $0`
-if [ -e $SDIR/setenv-build-jogl-x86_64.sh ] ; then
- . $SDIR/setenv-build-jogl-x86_64.sh
+if [ -e $SDIR/setenv-build-jogamp-x86_64.sh ] ; then
+ . $SDIR/setenv-build-jogamp-x86_64.sh
fi
# -Dc.compiler.debug=true
diff --git a/make/scripts/make.gluegen.all.win32.bat b/make/scripts/make.gluegen.all.win32.bat
deleted file mode 100755
index 86e8140..0000000
--- a/make/scripts/make.gluegen.all.win32.bat
+++ /dev/null
@@ -1,24 +0,0 @@
-set THISDIR="C:\JOGL"
-
-set J2RE_HOME=c:\jre1.7.0_67_x32
-set JAVA_HOME=c:\jdk1.7.0_67_x32
-set ANT_PATH=C:\apache-ant-1.9.4
-
-set PATH=%JAVA_HOME%\bin;%ANT_PATH%\bin;c:\mingw\bin;%PATH%
-
-set LIB_GEN=%THISDIR%\lib
-set CLASSPATH=.;%THISDIR%\build-win32\classes
-REM -Dc.compiler.debug=true
-REM -DuseOpenMAX=true
-REM -DuseKD=true
-REM -Djogl.cg=1 -D-Dwindows.cg.lib=C:\Cg-2.2
-
-set SOURCE_LEVEL=1.6
-set TARGET_LEVEL=1.6
-set TARGET_RT_JAR=C:\jre1.6.0_30\lib\rt.jar
-
-REM set JOGAMP_JAR_CODEBASE=Codebase: *.jogamp.org
-set JOGAMP_JAR_CODEBASE=Codebase: *.goethel.localnet
-
-ant -Drootrel.build=build-win32 %1 %2 %3 %4 %5 %6 %7 %8 %9 > make.gluegen.all.win32.log 2>&1
-
diff --git a/make/scripts/make.gluegen.all.win64.bat b/make/scripts/make.gluegen.all.win64.bat
index ea61416..b0dc64e 100755
--- a/make/scripts/make.gluegen.all.win64.bat
+++ b/make/scripts/make.gluegen.all.win64.bat
@@ -1,10 +1,15 @@
-set THISDIR="C:\JOGL"
+set THISDIR="C:\JogAmp"
-set J2RE_HOME=c:\jre1.7.0_67_x64
-set JAVA_HOME=c:\jdk1.7.0_67_x64
-set ANT_PATH=C:\apache-ant-1.9.4
+set J2RE_HOME=c:\jdk-17
+set JAVA_HOME=c:\jdk-17
+set ANT_PATH=C:\apache-ant-1.10.5
+set GIT_PATH=C:\cygwin64\bin
+set SEVENZIP=C:\Program Files\7-Zip
-set PATH=%JAVA_HOME%\bin;%ANT_PATH%\bin;c:\mingw64\bin;c:\mingw\bin;%PATH%
+set CMAKE_PATH=C:\cmake-3.25.1-windows-x86_64
+set CMAKE_C_COMPILER=c:\mingw64\bin\gcc
+
+set PATH=%J2RE_HOME%\bin;%JAVA_HOME%\bin;%ANT_PATH%\bin;c:\mingw64\bin;%CMAKE_PATH%\bin;%GIT_PATH%;%SEVENZIP%;%PATH%
set LIB_GEN=%THISDIR%\lib
set CLASSPATH=.;%THISDIR%\build-win64\classes
@@ -13,9 +18,9 @@ REM -DuseOpenMAX=true
REM -DuseKD=true
REM -Djogl.cg=1 -D-Dwindows.cg.lib=C:\Cg-2.2
-set SOURCE_LEVEL=1.6
-set TARGET_LEVEL=1.6
-set TARGET_RT_JAR=C:\jre1.6.0_30\lib\rt.jar
+set SOURCE_LEVEL=1.8
+set TARGET_LEVEL=1.8
+set TARGET_RT_JAR=C:\jre1.8.0_212\lib\rt.jar
REM set JOGAMP_JAR_CODEBASE=Codebase: *.jogamp.org
set JOGAMP_JAR_CODEBASE=Codebase: *.goethel.localnet
diff --git a/make/scripts/make.macosx.jdk_lipo_libs.sh b/make/scripts/make.macosx.jdk_lipo_libs.sh
new file mode 100644
index 0000000..5619bc5
--- /dev/null
+++ b/make/scripts/make.macosx.jdk_lipo_libs.sh
@@ -0,0 +1,30 @@
+#! /bin/sh
+
+#
+# First unpack the OpenJDK (Temurin) package
+# for amd64 and arm64.
+# Then copy each lib-folder 'temurin-xy.jdk/Contents/Home/lib/'
+# to their respective target lib-folder:
+# - temurin-xy.jdk.amd64.lib/
+# - temurin-xy.jdk.arm64.lib/
+#
+# Now we can run this script producing fat lipo dylib files,
+# placed into
+# - temurin-xy.jdk.fat.lib
+#
+
+amd64_dir=$HOME/temurin-17.jdk.amd64.lib
+arm64_dir=$HOME/temurin-17.jdk.arm64.lib
+fat_dir=$HOME/temurin-17.jdk.fat.lib
+
+rm -rf $fat_dir
+mkdir $fat_dir
+
+for i in $amd64_dir/*.dylib ; do
+ bname=`basename $i`
+ if [ -e $arm64_dir/$bname ] ; then
+ lipo -create $i $arm64_dir/$bname -output $fat_dir/$bname
+ else
+ echo missing $arm64_dir/$bname
+ fi
+done
diff --git a/make/scripts/md2html_update.sh b/make/scripts/md2html_update.sh
new file mode 100755
index 0000000..85e237a
--- /dev/null
+++ b/make/scripts/md2html_update.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -x
+
+sdir=`dirname $(readlink -f $0)`
+rdir=$sdir/../..
+
+pandoc_md2html_local.sh $rdir/doc/GlueGen_Mapping.md > $rdir/doc/GlueGen_Mapping.html
+pandoc_md2html_local.sh $rdir/doc/manual/index.md > $rdir/doc/manual/index.html
+pandoc_md2html_local.sh $rdir/doc/misc/macos_nativelib_dependencies.md > $rdir/doc/misc/macos_nativelib_dependencies.html
+pandoc_md2html_local.sh $rdir/doc/JogAmpMacOSVersions.md > $rdir/doc/JogAmpMacOSVersions.html
diff --git a/make/scripts/runtest-secmgr.sh b/make/scripts/runtest-secmgr.sh
index 24f1b58..b174d36 100755
--- a/make/scripts/runtest-secmgr.sh
+++ b/make/scripts/runtest-secmgr.sh
@@ -99,7 +99,7 @@ function onetest() {
#onetest com.jogamp.common.util.IntObjectHashMapTest 2>&1 | tee -a $LOG
#onetest com.jogamp.common.util.LongIntHashMapTest 2>&1 | tee -a $LOG
#onetest com.jogamp.common.nio.TestBuffersFloatDoubleConversion 2>&1 | tee -a $LOG
-#onetest com.jogamp.gluegen.PCPPTest 2>&1 | tee -a $LOG
+#onetest com.jogamp.gluegen.JCPPTest 2>&1 | tee -a $LOG
#onetest com.jogamp.common.nio.TestPointerBufferEndian 2>&1 | tee -a $LOG
#onetest com.jogamp.common.nio.TestStructAccessorEndian 2>&1 | tee -a $LOG
#onetest com.jogamp.common.os.TestElfReader01 2>&1 | tee -a $LOG
diff --git a/make/scripts/runtest-x32.bat b/make/scripts/runtest-x32.bat
deleted file mode 100755
index 5a2739c..0000000
--- a/make/scripts/runtest-x32.bat
+++ /dev/null
@@ -1,8 +0,0 @@
-REM scripts\java-win32.bat com.jogamp.common.GlueGenVersion
-REM scripts\java-win32.bat com.jogamp.common.util.TestVersionInfo
-REM scripts\java-win32.bat com.jogamp.gluegen.test.junit.generation.Test1p1JavaEmitter
-REM scripts\java-win32.bat com.jogamp.gluegen.test.junit.generation.Test1p2ProcAddressEmitter
-scripts\java-win32.bat com.jogamp.common.util.TestTempJarCache
-REM scripts\java-win32.bat com.jogamp.common.os.TestElfReader01
-REM scripts\java-win32.bat com.jogamp.common.util.TestIOUtilURIHandling
-
diff --git a/make/scripts/runtest-x64.bat b/make/scripts/runtest-x64.bat
index f03dc41..b8bd437 100755
--- a/make/scripts/runtest-x64.bat
+++ b/make/scripts/runtest-x64.bat
@@ -1,13 +1,33 @@
-REM scripts\java-win64.bat com.jogamp.common.GlueGenVersion
+REM set TEMP=C:\Documents and Settings\test\temp-exec
+REM set TMP=C:\Documents and Settings\test\temp-exec
+REM set TEMP=C:\Users\test\temp-exec
+REM set TMP=C:\Users\test\temp-exec
+REM set TMP=C:\Users\test\(ABC)abc\temp
+
+scripts\java-win64.bat com.jogamp.common.GlueGenVersion
REM scripts\java-win64.bat com.jogamp.common.util.TestVersionInfo
+
+REM scripts\java-win64.bat com.jogamp.gluegen.jcpp.IncludeAbsoluteTest
+
+REM scripts\java-win64.bat com.jogamp.gluegen.test.junit.generation.TestJCPP
+REM scripts\java-win64.bat com.jogamp.gluegen.test.junit.generation.TestCParser
+
REM scripts\java-win64.bat com.jogamp.gluegen.test.junit.generation.Test1p1JavaEmitter
REM scripts\java-win64.bat com.jogamp.gluegen.test.junit.generation.Test1p2ProcAddressEmitter
-scripts\java-win64.bat com.jogamp.common.util.TestTempJarCache
+REM scripts\java-win64.bat com.jogamp.gluegen.test.junit.generation.Test1p2LoadJNIAndImplLib
+REM scripts\java-win64.bat com.jogamp.gluegen.test.junit.generation.Test1p2DynamicLibraryBundle
+REM scripts\java-win64.bat com.jogamp.common.util.TestTempJarCache
REM scripts\java-win64.bat com.jogamp.common.os.TestElfReader01
+REM scripts\java-win64.bat com.jogamp.common.util.TestPlatform01
REM scripts\java-win64.bat com.jogamp.common.util.TestIOUtil01
-REM scripts\java-win64.bat com.jogamp.common.util.TestIOUtilURICompose
-REM scripts\java-win64.bat com.jogamp.common.util.TestIOUtilURIHandling
+REM scripts\java-win64.bat com.jogamp.common.util.TestJarUtil
REM scripts\java-win64.bat com.jogamp.common.net.TestUrisWithAssetHandler
REM scripts\java-win64.bat com.jogamp.common.net.TestURIQueryProps
+REM scripts\java-win64.bat com.jogamp.common.net.TestUri01
+REM scripts\java-win64.bat com.jogamp.common.net.TestUri02Composing
+REM scripts\java-win64.bat com.jogamp.common.net.TestUri03Resolving
+REM scripts\java-win64.bat com.jogamp.common.net.TestUri99LaunchOnReservedCharPathBug908
+REM scripts\java-win64.bat com.jogamp.common.nio.TestByteBufferInputStream
+REM scripts\java-win64.bat com.jogamp.common.nio.TestByteBufferOutputStream
diff --git a/make/scripts/runtest.sh b/make/scripts/runtest.sh
index 52df0a3..2b2d773 100755
--- a/make/scripts/runtest.sh
+++ b/make/scripts/runtest.sh
@@ -39,6 +39,16 @@ ANT_JARS=$ANT_PATH/lib/ant.jar:$ANT_PATH/lib/ant-junit.jar:$ANT_PATH/lib/ant-lau
LOG=runtest.log
rm -f $LOG
+GLUEGEN_ROOT=`dirname $builddir`
+ROOTREL_BUILD=`basename $builddir`
+builddirAbs=`readlink -f $builddir`
+
+# MODULE_ARGS="--illegal-access=warn"
+# MODULE_ARGS="--add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.desktop/sun.awt=ALL-UNNAMED --add-opens java.desktop/sun.java2d=ALL-UNNAMED"
+MODULE_ARGS="--add-opens java.desktop/sun.awt=ALL-UNNAMED --add-opens java.desktop/sun.java2d=ALL-UNNAMED"
+
+X_ARGS="-Drootrel.build=$ROOTREL_BUILD -Dgluegen.root=$GLUEGEN_ROOT"
+
#D_ARGS="-Djogamp.debug.ProcAddressHelper -Djogamp.debug.NativeLibrary -Djogamp.debug.NativeLibrary.Lookup"
#D_ARGS="-Djogamp.debug.TraceLock"
#D_ARGS="-Djogamp.debug.Platform -Djogamp.debug.NativeLibrary"
@@ -46,35 +56,46 @@ rm -f $LOG
#D_ARGS="-Djogamp.debug.TempJarCache"
#D_ARGS="-Djogamp.debug.TempFileCache"
#D_ARGS="-Djogamp.debug.IOUtil -Djogamp.debug.JNILibLoader -Djogamp.debug.TempFileCache -Djogamp.debug.JarUtil -Djava.io.tmpdir=/run/tmp"
-#D_ARGS="-Djogamp.debug.IOUtil -Djogamp.debug.JNILibLoader -Djogamp.debug.TempFileCache -Djogamp.debug.JarUtil -Djogamp.debug.TempJarCache"
+#D_ARGS="-Djogamp.debug.IOUtil -Djogamp.debug.NativeLibrary -Djogamp.debug.JNILibLoader -Djogamp.debug.TempFileCache -Djogamp.debug.JarUtil -Djogamp.debug.TempJarCache"
+#D_ARGS="-Djogamp.debug.IOUtil -Djogamp.debug.JarUtil -Djogamp.debug.TempJarCache -Djogamp.debug.Uri -Djogamp.debug.Uri.ShowFix"
+#D_ARGS="-Djogamp.debug.Uri -Djogamp.debug.Uri.ShowFix"
#D_ARGS="-Djogamp.debug.JNILibLoader -Djogamp.gluegen.UseTempJarCache=false"
#D_ARGS="-Djogamp.debug.JNILibLoader -Djogamp.debug.TempJarCache"
+#D_ARGS="-Djogamp.debug.JNILibLoader -Djogamp.debug.NativeLibrary"
#D_ARGS="-Djogamp.debug.JNILibLoader"
+#D_ARGS="-Djogamp.debug.JNILibLoader.Perf"
#D_ARGS="-Djogamp.debug.Lock"
#D_ARGS="-Djogamp.debug.Lock -Djogamp.debug.Lock.TraceLock"
#D_ARGS="-Djogamp.debug.Lock.TraceLock"
-D_ARGS="-Djogamp.debug.IOUtil"
+#D_ARGS="-Djogamp.debug.IOUtil -Djogamp.debug.IOUtil.Exe -Djogamp.debug.IOUtil.Exe.NoStream"
+#D_ARGS="-Djogamp.debug.IOUtil -Djogamp.debug.TempFileCache -Djogamp.debug.TempJarCache -Djogamp.debug.IOUtil.Exe"
+#D_ARGS="-Djogamp.debug.IOUtil -Djogamp.debug.TempFileCache -Djogamp.debug.TempJarCache -Djava.io.tmpdir=/run/501"
+#D_ARGS="-Djogamp.debug.IOUtil -Djogamp.debug.TempFileCache -Djogamp.debug.TempJarCache"
+#D_ARGS="-Djogamp.debug.ByteBufferInputStream"
+#D_ARGS="-Djogamp.debug.Buffers"
#D_ARGS="-Djogamp.debug.Bitstream"
#D_ARGS="-Djogamp.debug=all"
+#D_ARGS="-Djogamp.debug.Logging"
function onetest() {
- #USE_CLASSPATH=lib/junit.jar:$ANT_JARS:lib/semantic-versioning/semver.jar:"$builddir"/../make/lib/TestJarsInJar.jar:"$builddir"/gluegen-rt.jar:"$builddir"/gluegen.jar:"$builddir"/gluegen-test-util.jar:"$builddir"/test/build/gluegen-test.jar
- USE_CLASSPATH=lib/junit.jar:$ANT_JARS:lib/semantic-versioning/semver.jar:"$builddir"/../make/lib/TestJarsInJar.jar:"$builddir"/gluegen-rt.jar:"$builddir"/gluegen.jar:"$builddir"/gluegen-test-util.jar:"$builddir"/test/build/gluegen-test.jar:"$builddir"/gluegen-rt-natives.jar
- #USE_CLASSPATH=lib/junit.jar:$ANT_JARS:lib/semantic-versioning/semver.jar:"$builddir"/../make/lib/TestJarsInJar.jar:"$builddir"/gluegen-rt-alt.jar:"$builddir"/gluegen.jar:"$builddir"/gluegen-test-util.jar:"$builddir"/test/build/gluegen-test.jar
- libspath="$builddir"/test/build/natives
- #USE_CLASSPATH=lib/junit.jar:$ANT_JARS:"$builddir"/../make/lib/TestJarsInJar.jar:"$builddir"/classes:"$builddir"/test/build/classes
- #libspath="$builddir"/obj:"$builddir"/test/build/natives:
- LD_LIBRARY_PATH=$libspath:$LD_LIBRARY_PATH
- DYLD_LIBRARY_PATH=$LD_LIBRARY_PATH
+ #USE_CLASSPATH=lib/junit.jar:$ANT_JARS:lib/semantic-versioning/semver.jar:"$builddir"/../make/lib/TestJarsInJar.jar:"$builddir"/gluegen-rt.jar:"$builddir"/gluegen.jar:"$builddir"/gluegen-test-util.jar:"$builddir"/test/build/gluegen-test.jar:../jcpp/lib/guava-32.1.2-jre.jar
+ USE_CLASSPATH=lib/junit.jar:$ANT_JARS:lib/semantic-versioning/semver.jar:"$builddir"/../make/lib/TestJarsInJar.jar:"$builddir"/gluegen-rt.jar:"$builddir"/gluegen.jar:"$builddir"/gluegen-test-util.jar:"$builddir"/test/build/gluegen-test.jar:"$builddir"/gluegen-rt-natives.jar:../jcpp/lib/guava-32.1.2-jre.jar
+ #USE_CLASSPATH=lib/junit.jar:$ANT_JARS:lib/semantic-versioning/semver.jar:"$builddir"/../make/lib/TestJarsInJar.jar:"$builddir"/gluegen-rt-alt.jar:"$builddir"/gluegen.jar:"$builddir"/gluegen-test-util.jar:"$builddir"/test/build/gluegen-test.jar:../jcpp/lib/guava-32.1.2-jre.jar
+ #USE_CLASSPATH=lib/junit.jar:$ANT_JARS:"$builddir"/../make/lib/TestJarsInJar.jar:"$builddir"/classes:"$builddir"/test/build/classes:../jcpp/lib/guava-32.1.2-jre.jar
+ #libspath="${builddirAbs}"/test/build/natives
+ libspath="${builddirAbs}"/obj:"${builddirAbs}"/test/build/natives
+ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$libspath
+ DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:$libspath
export LD_LIBRARY_PATH DYLD_LIBRARY_PATH
echo LD_LIBRARY_PATH $LD_LIBRARY_PATH
+ echo DYLD_LIBRARY_PATH $DYLD_LIBRARY_PATH
echo USE_CLASSPATH $USE_CLASSPATH
which java
- #echo java -cp $USE_CLASSPATH $D_ARGS -Djava.library.path=$libspath $*
- #java -cp $USE_CLASSPATH $D_ARGS -Djava.library.path="$libspath" $*
- echo java -cp "$USE_CLASSPATH" $D_ARGS $*
- java -cp "$USE_CLASSPATH" $D_ARGS $*
- #j3 -cp "$USE_CLASSPATH" $D_ARGS $*
+ echo java $MODULE_ARGS $X_ARGS -Djava.library.path=$libspath -cp "$USE_CLASSPATH" $D_ARGS $*
+ java $MODULE_ARGS $X_ARGS -Djava.library.path="$libspath" -cp "$USE_CLASSPATH" $D_ARGS $*
+ #echo java -cp "$USE_CLASSPATH" $X_ARGS $D_ARGS $*
+ #java -cp "$USE_CLASSPATH" $X_ARGS $D_ARGS $*
+ #j3 -cp "$USE_CLASSPATH" $X_ARGS $D_ARGS $*
echo
}
#
@@ -82,7 +103,7 @@ function onetest() {
#onetest com.jogamp.common.util.TestSystemPropsAndEnvs 2>&1 | tee -a $LOG
#onetest com.jogamp.common.util.TestVersionInfo 2>&1 | tee -a $LOG
#onetest com.jogamp.common.util.TestVersionNumber 2>&1 | tee -a $LOG
-onetest com.jogamp.common.util.TestVersionSemantics 2>&1 | tee -a $LOG
+#onetest com.jogamp.common.util.TestVersionSemantics 2>&1 | tee -a $LOG
#onetest com.jogamp.common.util.TestIteratorIndexCORE 2>&1 | tee -a $LOG
#onetest com.jogamp.common.util.locks.TestRecursiveLock01 2>&1 | tee -a $LOG
#onetest com.jogamp.common.util.locks.TestRecursiveThreadGroupLock01 2>&1 | tee -a $LOG
@@ -92,37 +113,71 @@ onetest com.jogamp.common.util.TestVersionSemantics 2>&1 | tee -a $LOG
#onetest com.jogamp.common.util.TestFloatStack01 2>&1 | tee -a $LOG
#onetest com.jogamp.common.util.TestIntegerStack01 2>&1 | tee -a $LOG
#onetest com.jogamp.common.util.TestArrayHashSet01 2>&1 | tee -a $LOG
-#onetest com.jogamp.common.util.IntIntHashMapTest 2>&1 | tee -a $LOG
-#onetest com.jogamp.common.util.IntObjectHashMapTest 2>&1 | tee -a $LOG
-#onetest com.jogamp.common.util.LongIntHashMapTest 2>&1 | tee -a $LOG
+#onetest com.jogamp.common.util.TestArrayHashMap01 2>&1 | tee -a $LOG
+#onetest com.jogamp.common.util.TestIntIntHashMap 2>&1 | tee -a $LOG
+#onetest com.jogamp.common.util.TestIntObjectHashMap 2>&1 | tee -a $LOG
+#onetest com.jogamp.common.util.TestLongIntHashMap 2>&1 | tee -a $LOG
#onetest com.jogamp.common.util.TestPlatform01 2>&1 | tee -a $LOG
#onetest com.jogamp.common.util.TestRunnableTask01 2>&1 | tee -a $LOG
+#onetest com.jogamp.common.util.TestWorkerThread01 2>&1 | tee -a $LOG
#onetest com.jogamp.common.util.TestIOUtil01 2>&1 | tee -a $LOG
-#onetest com.jogamp.common.util.TestIOUtilURICompose 2>&1 | tee -a $LOG
-#onetest com.jogamp.common.util.TestIOUtilURIHandling 2>&1 | tee -a $LOG
#onetest com.jogamp.common.util.TestTempJarCache 2>&1 | tee -a $LOG
#onetest com.jogamp.common.util.TestJarUtil 2>&1 | tee -a $LOG
#onetest com.jogamp.common.util.TestValueConversion 2>&1 | tee -a $LOG
#onetest com.jogamp.common.util.TestSyncRingBuffer01 $*
#onetest com.jogamp.common.util.TestLFRingBuffer01 $*
+#onetest com.jogamp.common.util.TestBitfield00 2>&1 | tee -a $LOG
#onetest com.jogamp.common.util.TestBitstream00 2>&1 | tee -a $LOG
#onetest com.jogamp.common.util.TestBitstream01 2>&1 | tee -a $LOG
#onetest com.jogamp.common.util.TestBitstream02 2>&1 | tee -a $LOG
#onetest com.jogamp.common.util.TestBitstream03 2>&1 | tee -a $LOG
#onetest com.jogamp.common.util.TestBitstream04 2>&1 | tee -a $LOG
+onetest com.jogamp.common.util.TestStringUtil 2>&1 | tee -a $LOG
#onetest com.jogamp.common.net.TestUrisWithAssetHandler 2>&1 | tee -a $LOG
-#onetest com.jogamp.common.net.TestURIQueryProps 2>&1 | tee -a $LOG
-#onetest com.jogamp.common.net.AssetURLConnectionUnregisteredTest 2>&1 | tee -a $LOG
-#onetest com.jogamp.common.net.AssetURLConnectionRegisteredTest 2>&1 | tee -a $LOG
+#onetest com.jogamp.common.net.TestUriQueryProps 2>&1 | tee -a $LOG
+#onetest com.jogamp.common.net.TestUri01 2>&1 | tee -a $LOG
+#onetest com.jogamp.common.net.TestUri02Composing 2>&1 | tee -a $LOG
+#onetest com.jogamp.common.net.TestUri03Resolving 2>&1 | tee -a $LOG
+#onetest com.jogamp.common.net.TestUri99LaunchOnReservedCharPathBug908 2>&1 | tee -a $LOG
+#onetest com.jogamp.common.net.TestAssetURLConnectionUnregistered 2>&1 | tee -a $LOG
+#onetest com.jogamp.common.net.TestAssetURLConnectionRegistered 2>&1 | tee -a $LOG
#onetest com.jogamp.junit.sec.TestSecIOUtil01 2>&1 | tee -a $LOG
+#onetest com.jogamp.common.nio.TestBuffers 2>&1 | tee -a $LOG
#onetest com.jogamp.common.nio.TestBuffersFloatDoubleConversion 2>&1 | tee -a $LOG
#onetest com.jogamp.common.nio.TestPointerBufferEndian 2>&1 | tee -a $LOG
#onetest com.jogamp.common.nio.TestStructAccessorEndian 2>&1 | tee -a $LOG
-#onetest com.jogamp.common.os.TestElfReader01 2>&1 | tee -a $LOG
-#onetest com.jogamp.gluegen.PCPPTest 2>&1 | tee -a $LOG
+#onetest com.jogamp.common.nio.TestByteBufferInputStream 2>&1 | tee -a $LOG
+#onetest com.jogamp.common.nio.TestByteBufferOutputStream 2>&1 | tee -a $LOG
+#onetest com.jogamp.common.nio.TestByteBufferCopyStream 2>&1 | tee -a $LOG
+#onetest com.jogamp.common.os.TestElfReader01 $* 2>&1 | tee -a $LOG
+#onetest com.jogamp.common.os.TestClock01 $* 2>&1 | tee -a $LOG
+#onetest com.jogamp.gluegen.test.junit.internals.TestType 2>&1 | tee -a $LOG
+
+#onetest com.jogamp.gluegen.test.junit.generation.TestJCPP $* 2>&1 | tee -a $LOG
+#onetest com.jogamp.gluegen.test.junit.generation.TestCParser $* 2>&1 | tee -a $LOG
+#onetest com.jogamp.gluegen.jcpp.CppReaderTest 2>&1 | tee -a $LOG
+#onetest com.jogamp.gluegen.jcpp.ErrorTest 2>&1 | tee -a $LOG
+#onetest com.jogamp.gluegen.jcpp.IncludeAbsoluteTest 2>&1 | tee -a $LOG
+#onetest com.jogamp.gluegen.jcpp.JavaFileSystemTest 2>&1 | tee -a $LOG
+#onetest com.jogamp.gluegen.jcpp.JoinReaderTest 2>&1 | tee -a $LOG
+#onetest com.jogamp.gluegen.jcpp.LexerSourceTest 2>&1 | tee -a $LOG
+#onetest com.jogamp.gluegen.jcpp.NumericValueTest 2>&1 | tee -a $LOG
+#onetest com.jogamp.gluegen.jcpp.PragmaTest 2>&1 | tee -a $LOG
+#onetest com.jogamp.gluegen.jcpp.PreprocessorTest 2>&1 | tee -a $LOG
+#onetest com.jogamp.gluegen.jcpp.RegressionTest 2>&1 | tee -a $LOG
+#onetest com.jogamp.gluegen.jcpp.TokenPastingWhitespaceTest 2>&1 | tee -a $LOG
+#onetest com.jogamp.gluegen.jcpp.VaArgsPastingTest 2>&1 | tee -a $LOG
+
#onetest com.jogamp.gluegen.test.junit.generation.Test1p1JavaEmitter 2>&1 | tee -a $LOG
#onetest com.jogamp.gluegen.test.junit.generation.Test1p2ProcAddressEmitter 2>&1 | tee -a $LOG
#onetest com.jogamp.gluegen.test.junit.generation.Test1p2LoadJNIAndImplLib 2>&1 | tee -a $LOG
+#onetest com.jogamp.gluegen.test.junit.generation.Test1p2DynamicLibraryBundle 2>&1 | tee -a $LOG
+#onetest com.jogamp.gluegen.test.junit.generation.Test2p1FuncPtr 2>&1 | tee -a $LOG
+#onetest com.jogamp.gluegen.test.junit.generation.Test2p2FuncPtr 2>&1 | tee -a $LOG
+#onetest com.jogamp.gluegen.test.junit.generation.Test3p1PtrStorage 2>&1 | tee -a $LOG
+#onetest com.jogamp.gluegen.test.junit.generation.Test3p2PtrStorage 2>&1 | tee -a $LOG
+#onetest com.jogamp.gluegen.test.junit.generation.Test4p1JavaCallback 2>&1 | tee -a $LOG
+#onetest com.jogamp.gluegen.test.junit.generation.Test4p2JavaCallback 2>&1 | tee -a $LOG
#onetest com.jogamp.gluegen.test.junit.structgen.TestStructGen01 2>&1 | tee -a $LOG
#onetest com.jogamp.gluegen.test.junit.structgen.TestStructGen02 2>&1 | tee -a $LOG
diff --git a/make/scripts/setenv-android-tools.sh b/make/scripts/setenv-android-tools.sh
new file mode 100644
index 0000000..477a66a
--- /dev/null
+++ b/make/scripts/setenv-android-tools.sh
@@ -0,0 +1,373 @@
+#! /bin/sh
+
+# Aligned with Android SDK build-tools 29 and NDK 20 as of 2019-12-10
+#
+# As it is no more easily achievable to download the complete SDK
+# separately, I used Android-Studio to fetch all parts incl. the NDK.
+# Thereafter I copied ~/Android/Sdk -> /opt-linux-x86_64/android-sdk-linux_x86_64
+# which I also use for the official crosscompilation.
+#
+# Variable names borrowed from ~/Android/Sdk/ndk/20.1.5948944/build/cmake/android.toolchain.cmake
+# We only use ANDROID_API_LEVEL instead of ANDROID_PLATFORM_LEVEL, as it describes the API level.
+#
+#
+# User should set environment variables:
+# ==========================================
+#
+# - ANDROID_HOME - defaults to one of
+# ~/Android/Sdk
+# /opt-linux-x86_64/android-sdk-linux_x86_64
+# /opt/android-sdk-linux_x86_64
+# /usr/local/android-sdk-linux_x86_64
+#
+# - ANDROID_API_LEVEL - defaults to 24
+#
+# - ANDROID_HOST_TAG - defaults to linux-x86_64
+#
+# - ANDROID_ABI - defaults to x86_64, one of
+# armeabi-v7a (with NEON by default since NDK r21)
+# arm64-v8a
+# x86_64
+# x86
+#
+# Following environment variables will be set
+# ============================================
+#
+# - ANDROID_SYSROOT_ABI
+# - ANDROID_TOOLCHAIN_NAME
+# - ANDROID_LLVM_TRIPLE
+# - ANDROID_BUILD_TOOLS_VERSION
+# - ANDROID_NDK
+# - ANDROID_BUILDTOOLS_ROOT
+# - ANDROID_TOOLCHAIN_ROOT
+# - ANDROID_TOOLCHAIN_SYSROOT0
+# - ANDROID_TOOLCHAIN_SYSROOT0_LIB
+# - ANDROID_TOOLCHAIN_SYSROOT1
+# - ANDROID_TOOLCHAIN_SYSROOT1_INC
+# - ANDROID_TOOLCHAIN_SYSROOT1_INC_ARCH
+# - ANDROID_TOOLCHAIN_SYSROOT1_INC_STL
+# - ANDROID_TOOLCHAIN_SYSROOT1_LIB1
+# - ANDROID_TOOLCHAIN_SYSROOT1_LIB2
+#
+# Android Studio SDK + NDK Filesystem Layout (official)
+#
+# ~/Android/Sdk/
+# ~/Android/Sdk/build-tools/29.0.2/
+# ~/Android/Sdk/build-tools/29.0.2/zipalign (*)
+# ~/Android/Sdk/ndk/
+# ~/Android/Sdk/ndk/20.1.5948944/platforms/android-24/arch-arm64 (1)
+# ~/Android/Sdk/ndk/20.1.5948944/platforms/android-24/arch-arm64/usr/lib/libc.a (*)(1)
+# ~/Android/Sdk/ndk/20.1.5948944/sysroot/ (gcc)
+# ~/Android/Sdk/ndk/20.1.5948944/sysroot/usr/include/ (gcc)
+# ~/Android/Sdk/ndk/20.1.5948944/sysroot/usr/lib/aarch64-linux-android/libc.a (gcc)
+# ~/Android/Sdk/ndk/20.1.5948944/toolchains/
+# ~/Android/Sdk/ndk/20.1.5948944/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/aarch64-linux-android/bin/ld (gcc)
+# ~/Android/Sdk/ndk/20.1.5948944/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-ld (gcc)
+# ~/Android/Sdk/ndk/20.1.5948944/toolchains/llvm/
+# ~/Android/Sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-ld (*)
+# ~/Android/Sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/linux-x86_64/aarch64-linux-android/bin/ld
+# ~/Android/Sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/linux-x86_64/bin/clang (*)
+# ~/Android/Sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/linux-x86_64/sysroot (2)
+# ~/Android/Sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include
+# ~/Android/Sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/aarch64-linux-android/asm/types.h (*) (2,3)
+# ~/Android/Sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/libc.a (*)
+# ~/Android/Sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/libc++_shared.so (*)
+# ~/Android/Sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/24/libc.a (*) (2)
+# ~/Android/Sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1/complex (*) (4)
+#
+# (*) tested by this script
+#
+# (1) ANDROID_TOOLCHAIN_SYSROOT0 exposes all libs with standard FS layout usr/lib, but no include files
+# -> ANDROID_TOOLCHAIN_SYSROOT0_LIB
+#
+# (2) ANDROID_TOOLCHAIN_SYSROOT1 exposes all libs but without standard FS layout, also exposes include files
+# -> ANDROID_TOOLCHAIN_SYSROOT1_INC
+#
+# (3) ANDROID_TOOLCHAIN_SYSROOT1 also exposes the arch dependent include files, i.e. asm/types.h etc
+# -> ANDROID_TOOLCHAIN_SYSROOT1_INC_ARCH
+#
+# (4) ANDROID_TOOLCHAIN_SYSROOT1_INC_STL for LLVM's C++ STL lib (default since NDK r18)
+# Using LLVM's c++_shared as of NDK r18: https://developer.android.com/ndk/guides/cpp-support.html
+# LLVM's c++ headers must come before other system header!
+# Also see https://github.com/android/ndk/issues/452 and https://gitlab.kitware.com/cmake/cmake/issues/17059
+#
+# Native libraries of (1) and (2) are identical
+#
+# Having
+# ANDROID_HOME=~/Android/Sdk
+# ANDROID_API_LEVEL 24
+# ANDROID_HOST_TAG linux-x86_64
+# ANDROID_ABI arm64-v8a
+# Using derived values of
+# ANDROID_BUILD_TOOLS_VERSION=29.0.2
+# ANDROID_NDK_VERSION=20.1.5948944
+# ANDROID_TOOLCHAIN_NAME aarch64-linux-android
+# ANDROID_TOOLCHAIN_PLATFORM_NAME=arm64
+# ANDROID_SYSROOT_ABI=arm64
+
+echo $0
+
+NDK_TOOLCHAIN_VERSION=clang
+echo "Setting NDK_TOOLCHAIN_VERSION to ${NDK_TOOLCHAIN_VERSION} default!"
+
+if [ -z "${ANDROID_API_LEVEL}" ] ; then
+ ANDROID_API_LEVEL=24
+ echo "Setting undefined ANDROID_API_LEVEL to ${ANDROID_API_LEVEL} default!"
+fi
+if [ -z "${ANDROID_HOST_TAG}" ] ; then
+ ANDROID_HOST_TAG=linux-x86_64
+ echo "Setting undefined ANDROID_HOST_TAG to ${ANDROID_HOST_TAG} default!"
+fi
+
+if [ -z "${ANDROID_ABI}" ] ; then
+ ANDROID_ABI=x86_64
+ echo "Setting undefined ANDROID_ABI to ${ANDROID_ABI} default!"
+fi
+if [ "${ANDROID_ABI}" = "armeabi-v7a" ] ; then
+ # with NEON by default since NDK r21
+ ANDROID_SYSROOT_ABI=arm
+ #CMAKE_SYSTEM_PROCESSOR=armv7-a
+ ANDROID_TOOLCHAIN_NAME=arm-linux-androideabi
+ ANDROID_LLVM_TRIPLE=armv7-none-linux-androideabi
+elif [ "${ANDROID_ABI}" = "arm64-v8a" ] ; then
+ ANDROID_SYSROOT_ABI=arm64
+ #CMAKE_SYSTEM_PROCESSOR=aarch64
+ ANDROID_TOOLCHAIN_NAME=aarch64-linux-android
+ ANDROID_LLVM_TRIPLE=aarch64-none-linux-android
+elif [ "${ANDROID_ABI}" = "x86_64" ] ; then
+ ANDROID_SYSROOT_ABI=x86_64
+ #CMAKE_SYSTEM_PROCESSOR=x86_64
+ ANDROID_TOOLCHAIN_NAME=x86_64-linux-android
+ ANDROID_LLVM_TRIPLE=x86_64-none-linux-android
+elif [ "${ANDROID_ABI}" = "x86" ] ; then
+ ANDROID_SYSROOT_ABI=x86
+ #CMAKE_SYSTEM_PROCESSOR=i686
+ ANDROID_TOOLCHAIN_NAME=i686-linux-android
+ ANDROID_LLVM_TRIPLE=i686-none-linux-android
+else
+ echo "ANDROID_ABI is ${ANDROID_ABI} and not supported!"
+ exit 1
+fi
+
+echo "Preset-0 (user)"
+echo ANDROID_HOME ${ANDROID_HOME}
+echo ANDROID_API_LEVEL ${ANDROID_API_LEVEL}
+echo ANDROID_HOST_TAG ${ANDROID_HOST_TAG}
+echo ANDROID_ABI ${ANDROID_ABI}
+echo
+echo Preset-1
+echo NDK_TOOLCHAIN_VERSION ${NDK_TOOLCHAIN_VERSION}
+echo ANDROID_SYSROOT_ABI ${ANDROID_SYSROOT_ABI}
+echo ANDROID_TOOLCHAIN_NAME ${ANDROID_TOOLCHAIN_NAME}
+echo "ANDROID_LLVM_TRIPLE ${ANDROID_LLVM_TRIPLE} (compiler target)"
+echo ANDROID_BUILD_TOOLS_VERSION ${ANDROID_BUILD_TOOLS_VERSION}
+echo ANDROID_NDK ${ANDROID_NDK}
+echo
+echo Preset-2
+echo ANDROID_BUILDTOOLS_ROOT ${ANDROID_BUILDTOOLS_ROOT}
+echo ANDROID_TOOLCHAIN_ROOT ${ANDROID_TOOLCHAIN_ROOT}
+echo ANDROID_TOOLCHAIN_SYSROOT0 ${ANDROID_TOOLCHAIN_SYSROOT0}
+echo ANDROID_TOOLCHAIN_SYSROOT0_LIB ${ANDROID_TOOLCHAIN_SYSROOT0_LIB}
+echo ANDROID_TOOLCHAIN_SYSROOT1 ${ANDROID_TOOLCHAIN_SYSROOT1}
+echo ANDROID_TOOLCHAIN_SYSROOT1_INC ${ANDROID_TOOLCHAIN_SYSROOT1_INC}
+echo ANDROID_TOOLCHAIN_SYSROOT1_INC_ARCH ${ANDROID_TOOLCHAIN_SYSROOT1_INC_ARCH}
+echo ANDROID_TOOLCHAIN_SYSROOT1_INC_STL ${ANDROID_TOOLCHAIN_SYSROOT1_INC_STL}
+echo ANDROID_TOOLCHAIN_SYSROOT1_LIB1 ${ANDROID_TOOLCHAIN_SYSROOT1_LIB1}
+echo ANDROID_TOOLCHAIN_SYSROOT1_LIB2 ${ANDROID_TOOLCHAIN_SYSROOT1_LIB2}
+echo
+
+check_exists() {
+ if [ ! -e "$1" ] ; then
+ echo "$1" does not exist
+ exit 1
+ fi
+ return 0
+}
+
+if [ -z "${ANDROID_HOME}" ] ; then
+ if [ -e ${HOME}/Android/Sdk ] ; then
+ ANDROID_HOME=${HOME}/Android/Sdk
+ elif [ -e /opt-linux-x86_64/android-sdk-linux_x86_64 ] ; then
+ ANDROID_HOME=/opt-linux-x86_64/android-sdk-linux_x86_64
+ elif [ -e /opt/android-sdk-linux_x86_64 ] ; then
+ ANDROID_HOME=/opt/android-sdk-linux_x86_64
+ elif [ -e /usr/local/android-sdk-linux_x86_64 ] ; then
+ ANDROID_HOME=/usr/local/android-sdk-linux_x86_64
+ else
+ echo ANDROID_HOME is not specified and does not exist in default locations
+ exit 1
+ fi
+elif [ ! -e ${ANDROID_HOME} ] ; then
+ echo ANDROID_HOME ${ANDROID_HOME} does not exist
+ exit 1
+fi
+
+unset ANDROID_BUILD_TOOLS_VERSION
+if [ -z "${ANDROID_BUILD_TOOLS_VERSION}" ] ; then
+ # basename $(dirname `find /home/sven/Android/Sdk/build-tools -name zipalign | sort -u | tail -n1`)
+ fzipalign=`find ${ANDROID_HOME}/build-tools -name zipalign | sort -u | tail -n1`
+ if [ ! -z "${fzipalign}" ] ; then
+ dzipalign=`dirname ${fzipalign}`
+ vzipalign=`basename ${dzipalign}`
+ if [ -e ${ANDROID_HOME}/build-tools/${vzipalign}/zipalign ] ; then
+ ANDROID_BUILD_TOOLS_VERSION=${vzipalign}
+ fi
+ fi
+ if [ -z "${ANDROID_BUILD_TOOLS_VERSION}" ] ; then
+ echo ANDROID_BUILD_TOOLS_VERSION ${ANDROID_HOME}/build-tools/ANDROID_BUILD_TOOLS_VERSION/zipalign does not exist
+ exit 1
+ fi
+fi
+
+if [ -z "${ANDROID_NDK}" ] ; then
+ #
+ # Generic android-ndk
+ #
+ if [ -e ${ANDROID_HOME}/ndk ] ; then
+ # basename $(dirname `find ndk -name toolchains -a -type d | sort -u | tail -n1`)
+ d2toolchains=`find ${ANDROID_HOME}/ndk -name toolchains -a -type d | sort -u | tail -n1`
+ if [ ! -z "${d2toolchains}" ] ; then
+ dtoolchains=`dirname ${d2toolchains}`
+ vtoolchains=`basename ${dtoolchains}`
+ # ~/Android/Sdk/ndk/20.1.5948944/sysroot/usr/lib/aarch64-linux-android/libc.a (*)
+ if [ -e ${ANDROID_HOME}/ndk/${vtoolchains}/sysroot/usr/lib/aarch64-linux-android/libc.a ] ; then
+ ANDROID_NDK_VERSION=${vtoolchains}
+ fi
+ fi
+ if [ -z "${ANDROID_NDK_VERSION}" ] ; then
+ echo ANDROID_NDK_VERSION ${ANDROID_HOME}/ndk/ANDROID_NDK_VERSION/sysroot/usr/lib/aarch64-linux-android/libc.a does not exist
+ else
+ ANDROID_NDK=${ANDROID_HOME}/ndk/${vtoolchains}
+ fi
+ fi
+ if [ -z "${ANDROID_NDK}" ] ; then
+ if [ -e /usr/local/android-ndk ] ; then
+ ANDROID_NDK=/usr/local/android-ndk
+ elif [ -e /opt-linux-x86_64/android-ndk ] ; then
+ ANDROID_NDK=/opt-linux-x86_64/android-ndk
+ elif [ -e /opt/android-ndk ] ; then
+ ANDROID_NDK=/opt/android-ndk
+ fi
+ fi
+ if [ -z "${ANDROID_NDK}" ] ; then
+ echo ANDROID_NDK is not specified and does not exist in default locations
+ exit 1
+ fi
+fi
+if [ ! -e "${ANDROID_NDK}" ] ; then
+ echo ANDROID_NDK ${ANDROID_NDK} does not exist
+ exit 1
+fi
+
+ANDROID_BUILDTOOLS_ROOT=${ANDROID_HOME}/build-tools/${ANDROID_BUILD_TOOLS_VERSION}
+ANDROID_TOOLCHAIN_ROOT=${ANDROID_NDK}/toolchains/llvm/prebuilt/${ANDROID_HOST_TAG}
+
+ANDROID_TOOLCHAIN_SYSROOT0=${ANDROID_NDK}/platforms/android-${ANDROID_API_LEVEL}/arch-${ANDROID_SYSROOT_ABI}
+ANDROID_TOOLCHAIN_SYSROOT0_LIB=${ANDROID_TOOLCHAIN_SYSROOT0}/usr/lib
+
+ANDROID_TOOLCHAIN_SYSROOT1=${ANDROID_TOOLCHAIN_ROOT}/sysroot
+ANDROID_TOOLCHAIN_SYSROOT1_INC=${ANDROID_TOOLCHAIN_SYSROOT1}/usr/include
+ANDROID_TOOLCHAIN_SYSROOT1_INC_ARCH=${ANDROID_TOOLCHAIN_SYSROOT1_INC}/${ANDROID_TOOLCHAIN_NAME}
+ANDROID_TOOLCHAIN_SYSROOT1_INC_STL=${ANDROID_TOOLCHAIN_SYSROOT1_INC}/c++/v1
+ANDROID_TOOLCHAIN_SYSROOT1_LIB1=${ANDROID_TOOLCHAIN_SYSROOT1}/usr/lib/${ANDROID_TOOLCHAIN_NAME}/${ANDROID_API_LEVEL}
+ANDROID_TOOLCHAIN_SYSROOT1_LIB2=${ANDROID_TOOLCHAIN_SYSROOT1}/usr/lib/${ANDROID_TOOLCHAIN_NAME}
+
+# ~/Android/Sdk/build-tools/29.0.2/zipalign (*)
+check_exists ${ANDROID_BUILDTOOLS_ROOT}/zipalign
+
+# ~/Android/Sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-ld (*)
+check_exists ${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_NAME}-ld
+
+# ~/Android/Sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/linux-x86_64/bin/clang (*)
+check_exists ${ANDROID_TOOLCHAIN_ROOT}/bin/clang
+
+# ~/Android/Sdk/ndk/20.1.5948944/platforms/android-24/arch-arm64/usr/lib/libc.a (*)
+check_exists ${ANDROID_TOOLCHAIN_SYSROOT0_LIB}/libc.a
+
+# ~/Android/Sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/aarch64-linux-android/asm/types.h (*) (2)
+check_exists ${ANDROID_TOOLCHAIN_SYSROOT1_INC_ARCH}/asm/types.h
+
+# ~/Android/Sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1/complex (*) (4)
+check_exists ${ANDROID_TOOLCHAIN_SYSROOT1_INC_STL}/complex
+
+# ~/Android/Sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/24/libc.a (*)
+check_exists ${ANDROID_TOOLCHAIN_SYSROOT1_LIB1}/libc.a
+
+# ~/Android/Sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/libc.a (*)
+# ~/Android/Sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/libc++_shared.so (*)
+check_exists ${ANDROID_TOOLCHAIN_SYSROOT1_LIB2}/libc.a
+check_exists ${ANDROID_TOOLCHAIN_SYSROOT1_LIB2}/libc++_shared.so
+
+export ANDROID_HOME
+export ANDROID_API_LEVEL
+export ANDROID_HOST_TAG
+export ANDROID_ABI
+
+export NDK_TOOLCHAIN_VERSION
+export ANDROID_SYSROOT_ABI
+export ANDROID_TOOLCHAIN_NAME
+export ANDROID_LLVM_TRIPLE
+export ANDROID_BUILD_TOOLS_VERSION
+export ANDROID_NDK
+
+export ANDROID_BUILDTOOLS_ROOT
+export ANDROID_TOOLCHAIN_ROOT
+export ANDROID_TOOLCHAIN_SYSROOT0
+export ANDROID_TOOLCHAIN_SYSROOT0_LIB
+export ANDROID_TOOLCHAIN_SYSROOT1
+export ANDROID_TOOLCHAIN_SYSROOT1_INC
+export ANDROID_TOOLCHAIN_SYSROOT1_INC_ARCH
+export ANDROID_TOOLCHAIN_SYSROOT1_INC_STL
+export ANDROID_TOOLCHAIN_SYSROOT1_LIB1
+export ANDROID_TOOLCHAIN_SYSROOT1_LIB2
+
+echo "Postset-0 (user)"
+echo ANDROID_HOME ${ANDROID_HOME}
+echo ANDROID_API_LEVEL ${ANDROID_API_LEVEL}
+echo ANDROID_HOST_TAG ${ANDROID_HOST_TAG}
+echo ANDROID_ABI ${ANDROID_ABI}
+echo
+echo Postset-1
+echo NDK_TOOLCHAIN_VERSION ${NDK_TOOLCHAIN_VERSION}
+echo ANDROID_SYSROOT_ABI ${ANDROID_SYSROOT_ABI}
+echo ANDROID_TOOLCHAIN_NAME ${ANDROID_TOOLCHAIN_NAME}
+echo "ANDROID_LLVM_TRIPLE ${ANDROID_LLVM_TRIPLE} (compiler target)"
+echo ANDROID_BUILD_TOOLS_VERSION ${ANDROID_BUILD_TOOLS_VERSION}
+echo ANDROID_NDK ${ANDROID_NDK}
+echo
+echo Postset-2
+echo ANDROID_BUILDTOOLS_ROOT ${ANDROID_BUILDTOOLS_ROOT}
+echo ANDROID_TOOLCHAIN_ROOT ${ANDROID_TOOLCHAIN_ROOT}
+echo ANDROID_TOOLCHAIN_SYSROOT0 ${ANDROID_TOOLCHAIN_SYSROOT0}
+echo ANDROID_TOOLCHAIN_SYSROOT0_LIB ${ANDROID_TOOLCHAIN_SYSROOT0_LIB}
+echo ANDROID_TOOLCHAIN_SYSROOT1 ${ANDROID_TOOLCHAIN_SYSROOT1}
+echo ANDROID_TOOLCHAIN_SYSROOT1_INC ${ANDROID_TOOLCHAIN_SYSROOT1_INC}
+echo ANDROID_TOOLCHAIN_SYSROOT1_INC_ARCH ${ANDROID_TOOLCHAIN_SYSROOT1_INC_ARCH}
+echo ANDROID_TOOLCHAIN_SYSROOT1_INC_STL ${ANDROID_TOOLCHAIN_SYSROOT1_INC_STL}
+echo ANDROID_TOOLCHAIN_SYSROOT1_LIB1 ${ANDROID_TOOLCHAIN_SYSROOT1_LIB1}
+echo ANDROID_TOOLCHAIN_SYSROOT1_LIB2 ${ANDROID_TOOLCHAIN_SYSROOT1_LIB2}
+echo
+
+export -p | grep ANDROID
+
+#
+# CC="$ANDROID_NDK/toolchains/llvm/prebuilt/$ANDROID_HOST_TAG/bin/clang -target $ANDROID_LLVM_TRIPLE"
+#
+## Generic flags.
+##list(APPEND ANDROID_COMPILER_FLAGS
+# -g
+# -DANDROID
+# -fdata-sections
+# -ffunction-sections
+# -funwind-tables
+# -fstack-protector-strong
+# -no-canonical-prefixes)
+#list(APPEND ANDROID_LINKER_FLAGS
+# -Wl,--build-id
+# -Wl,--warn-shared-textrel
+# -Wl,--fatal-warnings)
+#list(APPEND ANDROID_LINKER_FLAGS_EXE -Wl,--gc-sections)
+#
+#list(APPEND ANDROID_COMPILER_FLAGS_RELEASE -O2)
+#
+
diff --git a/make/scripts/setenv-build-jogl-x86.sh b/make/scripts/setenv-build-jogamp-x86.sh
index 5e4e542..c25474c 100644
--- a/make/scripts/setenv-build-jogl-x86.sh
+++ b/make/scripts/setenv-build-jogamp-x86.sh
@@ -19,28 +19,38 @@ if [ -z "$ANT_PATH" ] ; then
exit
fi
-if [ -e /opt-linux-x86/jre8 -a -e /opt-linux-x86/j2se8 ] ; then
- J2RE_HOME=/opt-linux-x86/jre8
- JAVA_HOME=/opt-linux-x86/j2se8
- PATH=$J2RE_HOME/bin:$JAVA_HOME/bin:$PATH
- export J2RE_HOME JAVA_HOME
- FOUND_JAVA=1
+if [ ! -z "$J2RE_HOME" -a ! -z "$JAVA_HOME" ] ; then
+ if [ -e $J2RE_HOME -a -e $JAVA_HOME ] ; then
+ PATH=$J2RE_HOME/bin:$JAVA_HOME/bin:$PATH
+ export J2RE_HOME JAVA_HOME
+ FOUND_JAVA=1
+ fi
fi
if [ -z "$FOUND_JAVA" ] ; then
- if [ -e /opt-linux-x86/jre7 -a -e /opt-linux-x86/j2se7 ] ; then
- J2RE_HOME=/opt-linux-x86/jre7
- JAVA_HOME=/opt-linux-x86/j2se7
- PATH=$J2RE_HOME/bin:$JAVA_HOME/bin:$PATH
+ if [ -e /usr/lib/jvm/java-17-openjdk-i386 ] ; then
+ J2RE_HOME=/usr/lib/jvm/java-17-openjdk-i386
+ JAVA_HOME=/usr/lib/jvm/java-17-openjdk-i386
+ PATH=$JAVA_HOME/bin:$PATH
+ export J2RE_HOME JAVA_HOME
+ FOUND_JAVA=1
+ fi
+fi
+
+if [ -z "$FOUND_JAVA" ] ; then
+ if [ -e /usr/lib/jvm/java-11-openjdk-i386 ] ; then
+ J2RE_HOME=/usr/lib/jvm/java-11-openjdk-i386
+ JAVA_HOME=/usr/lib/jvm/java-11-openjdk-i386
+ PATH=$JAVA_HOME/bin:$PATH
export J2RE_HOME JAVA_HOME
FOUND_JAVA=1
fi
fi
if [ -z "$FOUND_JAVA" ] ; then
- if [ -e /opt-linux-x86/jre6 -a -e /opt-linux-x86/j2se6 ] ; then
- J2RE_HOME=/opt-linux-x86/jre6
- JAVA_HOME=/opt-linux-x86/j2se6
+ if [ -e /opt-linux-x86/jre11 -a -e /opt-linux-x86/jdk11 ] ; then
+ J2RE_HOME=/opt-linux-x86/jre11
+ JAVA_HOME=/opt-linux-x86/jdk11
PATH=$J2RE_HOME/bin:$JAVA_HOME/bin:$PATH
export J2RE_HOME JAVA_HOME
FOUND_JAVA=1
@@ -59,19 +69,9 @@ if [ -z "$FOUND_JAVA" ] ; then
fi
fi
if [ -z "$FOUND_JAVA" ] ; then
- if [ -e /opt-solaris-x86/jre7 -a -e /opt-solaris-x86/j2se7 ] ; then
- J2RE_HOME=/opt-solaris-x86/jre7
- JAVA_HOME=/opt-solaris-x86/j2se7
- PATH=$J2RE_HOME/bin:$JAVA_HOME/bin:$PATH
- export J2RE_HOME JAVA_HOME
- FOUND_JAVA=1
- fi
-fi
-
-if [ -z "$FOUND_JAVA" ] ; then
- if [ -e /opt-solaris-x86/jre6 -a -e /opt-solaris-x86/j2se6 ] ; then
- J2RE_HOME=/opt-solaris-x86/jre6
- JAVA_HOME=/opt-solaris-x86/j2se6
+ if [ -e /opt-solaris-x86/jre11 -a -e /opt-solaris-x86/jdk11 ] ; then
+ J2RE_HOME=/opt-solaris-x86/jre11
+ JAVA_HOME=/opt-solaris-x86/jdk11
PATH=$J2RE_HOME/bin:$JAVA_HOME/bin:$PATH
export J2RE_HOME JAVA_HOME
FOUND_JAVA=1
diff --git a/make/scripts/setenv-build-jogl-x86_64.sh b/make/scripts/setenv-build-jogamp-x86_64.sh
index a18bbe0..26dc5d0 100644
--- a/make/scripts/setenv-build-jogl-x86_64.sh
+++ b/make/scripts/setenv-build-jogamp-x86_64.sh
@@ -15,39 +15,42 @@ if [ -z "$ANT_PATH" ] ; then
fi
fi
if [ -z "$ANT_PATH" ] ; then
- if [ -e /usr/share/ant/bin/ant -a -e /usr/share/ant/lib/ant.jar ] ; then
- ANT_PATH=/usr/share/ant
- export ANT_PATH
- echo autosetting ANT_PATH to $ANT_PATH
- fi
-fi
-if [ -z "$ANT_PATH" ] ; then
echo ANT_PATH does not exist, set it
exit
fi
-if [ -e /opt-linux-x86_64/jre8 -a -e /opt-linux-x86_64/j2se8 ] ; then
- J2RE_HOME=/opt-linux-x86_64/jre8
- JAVA_HOME=/opt-linux-x86_64/j2se8
- PATH=$J2RE_HOME/bin:$JAVA_HOME/bin:$PATH
- export J2RE_HOME JAVA_HOME
- FOUND_JAVA=1
+if [ ! -z "$J2RE_HOME" -a ! -z "$JAVA_HOME" ] ; then
+ if [ -e $J2RE_HOME -a -e $JAVA_HOME ] ; then
+ PATH=$J2RE_HOME/bin:$JAVA_HOME/bin:$PATH
+ export J2RE_HOME JAVA_HOME
+ FOUND_JAVA=1
+ fi
+fi
+
+if [ -z "$FOUND_JAVA" ] ; then
+ if [ -e /usr/lib/jvm/java-17-openjdk-amd64 ] ; then
+ J2RE_HOME=/usr/lib/jvm/java-17-openjdk-amd64
+ JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
+ PATH=$JAVA_HOME/bin:$PATH
+ export J2RE_HOME JAVA_HOME
+ FOUND_JAVA=1
+ fi
fi
if [ -z "$FOUND_JAVA" ] ; then
- if [ -e /opt-linux-x86_64/jre7 -a -e /opt-linux-x86_64/j2se7 ] ; then
- J2RE_HOME=/opt-linux-x86_64/jre7
- JAVA_HOME=/opt-linux-x86_64/j2se7
- PATH=$J2RE_HOME/bin:$JAVA_HOME/bin:$PATH
+ if [ -e /usr/lib/jvm/java-11-openjdk-amd64 ] ; then
+ J2RE_HOME=/usr/lib/jvm/java-11-openjdk-amd64
+ JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
+ PATH=$JAVA_HOME/bin:$PATH
export J2RE_HOME JAVA_HOME
FOUND_JAVA=1
fi
fi
if [ -z "$FOUND_JAVA" ] ; then
- if [ -e /opt-linux-x86_64/jre6 -a -e /opt-linux-x86_64/j2se6 ] ; then
- J2RE_HOME=/opt-linux-x86_64/jre6
- JAVA_HOME=/opt-linux-x86_64/j2se6
+ if [ -e /opt-linux-x86_64/jre11 -a -e /opt-linux-x86_64/jdk11 ] ; then
+ J2RE_HOME=/opt-linux-x86_64/jre11
+ JAVA_HOME=/opt-linux-x86_64/jdk11
PATH=$J2RE_HOME/bin:$JAVA_HOME/bin:$PATH
export J2RE_HOME JAVA_HOME
FOUND_JAVA=1
@@ -68,11 +71,11 @@ if [ -z "$FOUND_JAVA" ] ; then
fi
fi
if [ -z "$FOUND_JAVA" ] ; then
- if [ -e /opt-solaris-x86_64/jre7 -a -e /opt-solaris-x86_64/j2se7 ] ; then
+ if [ -e /opt-solaris-x86_64/jre11 -a -e /opt-solaris-x86_64/jdk11 ] ; then
# make a symbolic link: /opt-solaris-x86_64/jre7/bin/amd64/bin$ ln -s . bin
# since ant looks for $JAVA_HOME/bin/java and we need to force the 64bit JVM
- J2RE_HOME=/opt-solaris-x86_64/jre7/bin/amd64
- JAVA_HOME=/opt-solaris-x86_64/j2se7/bin/amd64
+ J2RE_HOME=/opt-solaris-x86_64/jre11/bin/amd64
+ JAVA_HOME=/opt-solaris-x86_64/jdk11/bin/amd64
PATH=$J2RE_HOME:$JAVA_HOME:$PATH
export J2RE_HOME JAVA_HOME
FOUND_JAVA=1
diff --git a/make/scripts/test-win32-smb_share.bat b/make/scripts/test-win32-smb_share.bat
deleted file mode 100755
index 5f55583..0000000
--- a/make/scripts/test-win32-smb_share.bat
+++ /dev/null
@@ -1,24 +0,0 @@
-
-set SMB_ROOT=\\risa.goethel.localnet\deployment\test\jogamp
-
-set BLD_SUB=build-win32
-set J2RE_HOME=c:\jre1.7.0_45_x32
-set JAVA_HOME=c:\jdk1.7.0_45_x32
-set ANT_PATH=C:\apache-ant-1.8.2
-
-set PROJECT_ROOT=%SMB_ROOT%\gluegen
-set BLD_DIR=%PROJECT_ROOT%\%BLD_SUB%
-
-set PATH=%JAVA_HOME%\bin;%ANT_PATH%\bin;%PATH%
-
-set D_ARGS="-Djogamp.debug=all"
-
-set LIB_DIR=
-
-set CP_ALL=.;%BLD_DIR%\gluegen-rt.jar;%PROJECT_ROOT%\make\lib\junit.jar;%ANT_PATH%\lib\ant.jar;%ANT_PATH%\lib\ant-junit.jar
-
-echo CP_ALL %CP_ALL%
-
-%J2RE_HOME%\bin\java -classpath %CP_ALL% %D_ARGS% %X_ARGS% com.jogamp.common.GlueGenVersion > java-win.log 2>&1
-tail java-win.log
-
diff --git a/make/stub_includes/gluegen/stdio.h b/make/stub_includes/gluegen/stdio.h
new file mode 100644
index 0000000..13d941e
--- /dev/null
+++ b/make/stub_includes/gluegen/stdio.h
@@ -0,0 +1,7 @@
+#ifndef __stdio_h
+#define __stdio_h
+
+#include <gluegen_types.h>
+
+#endif /* __stdio_h */
+
diff --git a/make/stub_includes/jni/jawt.h b/make/stub_includes/jni/jawt.h
new file mode 100644
index 0000000..3867d54
--- /dev/null
+++ b/make/stub_includes/jni/jawt.h
@@ -0,0 +1,106 @@
+/*
+ * @(#)jawt.h 1.11 05/11/17
+ *
+ * This C header file is derived from Sun Microsystem's Java SDK provided C header file
+ * with the following copyright notice:
+ *
+ * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ *
+ * This version has complex comments removed and does not contain inlined algorithms etc, if any existed.
+ *
+ * The original C header file was included to JOGL on Sat Jun 21 02:10:30 2008
+ * (commit cbc45e816f4ee81031bffce19a99550681462a24) by Sun Microsystem's staff and were approved.
+ *
+ * This C header file is included due to ensure compatibility with - and invocation of the JAWT protocol.
+ * They are processed by GlueGen to create a Java binding for JAWT invocation only.
+ *
+ * http://ftp.resource.org/courts.gov/c/F3/387/387.F3d.522.03-5400.html (36)
+ * "Atari Games Corp. v. Nintendo of Am., Inc., Nos. 88-4805 & 89-0027, 1993 WL 207548, at *1 (N.D.Cal. May 18, 1993) ("Atari III")
+ * ("Program code that is strictly necessary to achieve current compatibility presents a merger problem, almost by definition,
+ * and is thus excluded from the scope of any copyright.")."
+ *
+ * http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2009:111:0016:0022:EN:PDF
+ * L 111/17 (10) and (15)
+ */
+
+#ifndef _JAVASOFT_JAWT_H_
+#define _JAVASOFT_JAWT_H_
+
+#include "jni.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * AWT native interface (new in JDK 1.3)
+ */
+
+typedef struct jawt_Rectangle {
+ jint x;
+ jint y;
+ jint width;
+ jint height;
+} JAWT_Rectangle;
+
+struct jawt_DrawingSurface;
+
+typedef struct jawt_DrawingSurfaceInfo {
+ void* platformInfo;
+ struct jawt_DrawingSurface* ds;
+ JAWT_Rectangle bounds;
+ jint clipSize;
+ JAWT_Rectangle* clip;
+} JAWT_DrawingSurfaceInfo;
+
+#define JAWT_LOCK_ERROR 0x00000001
+#define JAWT_LOCK_CLIP_CHANGED 0x00000002
+#define JAWT_LOCK_BOUNDS_CHANGED 0x00000004
+#define JAWT_LOCK_SURFACE_CHANGED 0x00000008
+
+typedef struct jawt_DrawingSurface {
+ JNIEnv* env;
+ jobject target;
+ jint (JNICALL *Lock)
+ (struct jawt_DrawingSurface* ds);
+ JAWT_DrawingSurfaceInfo* (JNICALL *GetDrawingSurfaceInfo)
+ (struct jawt_DrawingSurface* ds);
+ void (JNICALL *FreeDrawingSurfaceInfo)
+ (JAWT_DrawingSurfaceInfo* dsi);
+ void (JNICALL *Unlock)
+ (struct jawt_DrawingSurface* ds);
+} JAWT_DrawingSurface;
+
+typedef struct jawt {
+ jint version;
+ JAWT_DrawingSurface* (JNICALL *GetDrawingSurface)
+ (JNIEnv* env, jobject target);
+ void (JNICALL *FreeDrawingSurface)
+ (JAWT_DrawingSurface* ds);
+ /*
+ * Since 1.4
+ */
+ void (JNICALL *Lock)(JNIEnv* env);
+ /*
+ * Since 1.4
+ */
+ void (JNICALL *Unlock)(JNIEnv* env);
+ /*
+ * Since 1.4
+ */
+ jobject (JNICALL *GetComponent)(JNIEnv* env, void* platformInfo);
+
+} JAWT;
+
+_JNI_IMPORT_OR_EXPORT_
+jboolean JNICALL JAWT_GetAWT(JNIEnv* env, JAWT* awt);
+
+#define JAWT_VERSION_1_3 0x00010003
+#define JAWT_VERSION_1_4 0x00010004
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* !_JAVASOFT_JAWT_H_ */
diff --git a/make/stub_includes/jni/jni.h b/make/stub_includes/jni/jni.h
new file mode 100644
index 0000000..eac2640
--- /dev/null
+++ b/make/stub_includes/jni/jni.h
@@ -0,0 +1,1938 @@
+/*
+ * @(#)jni.h 1.62 06/02/02
+ *
+ * This C header file is derived from Sun Microsystem's Java SDK provided C header file
+ * with the following copyright notice:
+ *
+ * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ *
+ * This version has complex comments removed and does not contain inlined algorithms etc, if any existed.
+ *
+ * The original C header file was included to JOGL on Sat Jun 21 02:10:30 2008
+ * (commit cbc45e816f4ee81031bffce19a99550681462a24) by Sun Microsystem's staff and were approved.
+ *
+ * This C header file is included due to ensure compatibility with - and invocation of the JAWT protocol.
+ * They are processed by GlueGen to create a Java binding for JAWT invocation only.
+ *
+ * http://ftp.resource.org/courts.gov/c/F3/387/387.F3d.522.03-5400.html (36)
+ * "Atari Games Corp. v. Nintendo of Am., Inc., Nos. 88-4805 & 89-0027, 1993 WL 207548, at *1 (N.D.Cal. May 18, 1993) ("Atari III")
+ * ("Program code that is strictly necessary to achieve current compatibility presents a merger problem, almost by definition,
+ * and is thus excluded from the scope of any copyright.")."
+ *
+ * http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2009:111:0016:0022:EN:PDF
+ * L 111/17 (10) and (15)
+ */
+
+/*
+ * We used part of Netscape's Java Runtime Interface (JRI) as the starting
+ * point of our design and implementation.
+ */
+
+/******************************************************************************
+ * Java Runtime Interface
+ * Copyright (c) 1996 Netscape Communications Corporation. All rights reserved.
+ *****************************************************************************/
+
+#ifndef _JAVASOFT_JNI_H_
+#define _JAVASOFT_JNI_H_
+
+#include <stdio.h>
+#include <stdarg.h>
+#include <gluegen_stdint.h>
+
+#include "jni_md.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef JNI_TYPES_ALREADY_DEFINED_IN_JNI_MD_H
+
+typedef uint8_t jboolean;
+typedef uint16_t jchar;
+typedef int16_t jshort;
+typedef float jfloat;
+typedef double jdouble;
+
+typedef jint jsize;
+
+#ifdef __cplusplus
+
+class _jobject {};
+class _jclass : public _jobject {};
+class _jthrowable : public _jobject {};
+class _jstring : public _jobject {};
+class _jarray : public _jobject {};
+class _jbooleanArray : public _jarray {};
+class _jbyteArray : public _jarray {};
+class _jcharArray : public _jarray {};
+class _jshortArray : public _jarray {};
+class _jintArray : public _jarray {};
+class _jlongArray : public _jarray {};
+class _jfloatArray : public _jarray {};
+class _jdoubleArray : public _jarray {};
+class _jobjectArray : public _jarray {};
+
+typedef _jobject *jobject;
+typedef _jclass *jclass;
+typedef _jthrowable *jthrowable;
+typedef _jstring *jstring;
+typedef _jarray *jarray;
+typedef _jbooleanArray *jbooleanArray;
+typedef _jbyteArray *jbyteArray;
+typedef _jcharArray *jcharArray;
+typedef _jshortArray *jshortArray;
+typedef _jintArray *jintArray;
+typedef _jlongArray *jlongArray;
+typedef _jfloatArray *jfloatArray;
+typedef _jdoubleArray *jdoubleArray;
+typedef _jobjectArray *jobjectArray;
+
+#else
+
+struct _jobject;
+
+typedef struct _jobject *jobject;
+typedef jobject jclass;
+typedef jobject jthrowable;
+typedef jobject jstring;
+typedef jobject jarray;
+typedef jarray jbooleanArray;
+typedef jarray jbyteArray;
+typedef jarray jcharArray;
+typedef jarray jshortArray;
+typedef jarray jintArray;
+typedef jarray jlongArray;
+typedef jarray jfloatArray;
+typedef jarray jdoubleArray;
+typedef jarray jobjectArray;
+
+#endif
+
+typedef jobject jweak;
+
+typedef union jvalue {
+ jboolean z;
+ jbyte b;
+ jchar c;
+ jshort s;
+ jint i;
+ jlong j;
+ jfloat f;
+ jdouble d;
+ jobject l;
+} jvalue;
+
+struct _jfieldID;
+typedef struct _jfieldID *jfieldID;
+
+struct _jmethodID;
+typedef struct _jmethodID *jmethodID;
+
+typedef enum _jobjectType {
+ JNIInvalidRefType = 0,
+ JNILocalRefType = 1,
+ JNIGlobalRefType = 2,
+ JNIWeakGlobalRefType = 3
+} jobjectRefType;
+
+
+#endif /* JNI_TYPES_ALREADY_DEFINED_IN_JNI_MD_H */
+
+#define JNI_FALSE 0
+#define JNI_TRUE 1
+
+#define JNI_OK 0 /* success */
+#define JNI_ERR (-1) /* unknown error */
+#define JNI_EDETACHED (-2) /* thread detached from the VM */
+#define JNI_EVERSION (-3) /* JNI version error */
+#define JNI_ENOMEM (-4) /* not enough memory */
+#define JNI_EEXIST (-5) /* VM already created */
+#define JNI_EINVAL (-6) /* invalid arguments */
+
+#define JNI_COMMIT 1
+#define JNI_ABORT 2
+
+#ifdef __GLUEGEN__
+
+// GlueGen 'shortcut': We don't want to create bindings for JNI invocations!
+// Hence dropping the JNI details, use-case: jawt.h
+
+/** Special opaque GlueGen handling of JNIEnv */
+typedef long JNIEnv;
+
+#define JDK1_2
+#define JDK1_4
+#define JDK1_8
+
+#define _JNI_IMPORT_OR_EXPORT_ JNIIMPORT
+
+#define JNI_VERSION_1_1 0x00010001
+#define JNI_VERSION_1_2 0x00010002
+#define JNI_VERSION_1_4 0x00010004
+#define JNI_VERSION_1_6 0x00010006
+#define JNI_VERSION_1_8 0x00010008
+
+#else /* __GLUEGEN__ */
+
+typedef struct {
+ char *name;
+ char *signature;
+ void *fnPtr;
+} JNINativeMethod;
+
+struct JNINativeInterface_;
+
+struct JNIEnv_;
+
+#ifdef __cplusplus
+typedef JNIEnv_ JNIEnv;
+#else
+typedef const struct JNINativeInterface_ *JNIEnv;
+#endif
+
+struct JNIInvokeInterface_;
+
+struct JavaVM_;
+
+#ifdef __cplusplus
+typedef JavaVM_ JavaVM;
+#else
+typedef const struct JNIInvokeInterface_ *JavaVM;
+#endif
+
+struct JNINativeInterface_ {
+ void *reserved0;
+ void *reserved1;
+ void *reserved2;
+
+ void *reserved3;
+ jint (JNICALL *GetVersion)(JNIEnv *env);
+
+ jclass (JNICALL *DefineClass)
+ (JNIEnv *env, const char *name, jobject loader, const jbyte *buf,
+ jsize len);
+ jclass (JNICALL *FindClass)
+ (JNIEnv *env, const char *name);
+
+ jmethodID (JNICALL *FromReflectedMethod)
+ (JNIEnv *env, jobject method);
+ jfieldID (JNICALL *FromReflectedField)
+ (JNIEnv *env, jobject field);
+
+ jobject (JNICALL *ToReflectedMethod)
+ (JNIEnv *env, jclass cls, jmethodID methodID, jboolean isStatic);
+
+ jclass (JNICALL *GetSuperclass)
+ (JNIEnv *env, jclass sub);
+ jboolean (JNICALL *IsAssignableFrom)
+ (JNIEnv *env, jclass sub, jclass sup);
+
+ jobject (JNICALL *ToReflectedField)
+ (JNIEnv *env, jclass cls, jfieldID fieldID, jboolean isStatic);
+
+ jint (JNICALL *Throw)
+ (JNIEnv *env, jthrowable obj);
+ jint (JNICALL *ThrowNew)
+ (JNIEnv *env, jclass clazz, const char *msg);
+ jthrowable (JNICALL *ExceptionOccurred)
+ (JNIEnv *env);
+ void (JNICALL *ExceptionDescribe)
+ (JNIEnv *env);
+ void (JNICALL *ExceptionClear)
+ (JNIEnv *env);
+ void (JNICALL *FatalError)
+ (JNIEnv *env, const char *msg);
+
+ jint (JNICALL *PushLocalFrame)
+ (JNIEnv *env, jint capacity);
+ jobject (JNICALL *PopLocalFrame)
+ (JNIEnv *env, jobject result);
+
+ jobject (JNICALL *NewGlobalRef)
+ (JNIEnv *env, jobject lobj);
+ void (JNICALL *DeleteGlobalRef)
+ (JNIEnv *env, jobject gref);
+ void (JNICALL *DeleteLocalRef)
+ (JNIEnv *env, jobject obj);
+ jboolean (JNICALL *IsSameObject)
+ (JNIEnv *env, jobject obj1, jobject obj2);
+ jobject (JNICALL *NewLocalRef)
+ (JNIEnv *env, jobject ref);
+ jint (JNICALL *EnsureLocalCapacity)
+ (JNIEnv *env, jint capacity);
+
+ jobject (JNICALL *AllocObject)
+ (JNIEnv *env, jclass clazz);
+ jobject (JNICALL *NewObject)
+ (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
+ jobject (JNICALL *NewObjectV)
+ (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
+ jobject (JNICALL *NewObjectA)
+ (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
+
+ jclass (JNICALL *GetObjectClass)
+ (JNIEnv *env, jobject obj);
+ jboolean (JNICALL *IsInstanceOf)
+ (JNIEnv *env, jobject obj, jclass clazz);
+
+ jmethodID (JNICALL *GetMethodID)
+ (JNIEnv *env, jclass clazz, const char *name, const char *sig);
+
+ jobject (JNICALL *CallObjectMethod)
+ (JNIEnv *env, jobject obj, jmethodID methodID, ...);
+ jobject (JNICALL *CallObjectMethodV)
+ (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
+ jobject (JNICALL *CallObjectMethodA)
+ (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args);
+
+ jboolean (JNICALL *CallBooleanMethod)
+ (JNIEnv *env, jobject obj, jmethodID methodID, ...);
+ jboolean (JNICALL *CallBooleanMethodV)
+ (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
+ jboolean (JNICALL *CallBooleanMethodA)
+ (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args);
+
+ jbyte (JNICALL *CallByteMethod)
+ (JNIEnv *env, jobject obj, jmethodID methodID, ...);
+ jbyte (JNICALL *CallByteMethodV)
+ (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
+ jbyte (JNICALL *CallByteMethodA)
+ (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);
+
+ jchar (JNICALL *CallCharMethod)
+ (JNIEnv *env, jobject obj, jmethodID methodID, ...);
+ jchar (JNICALL *CallCharMethodV)
+ (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
+ jchar (JNICALL *CallCharMethodA)
+ (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);
+
+ jshort (JNICALL *CallShortMethod)
+ (JNIEnv *env, jobject obj, jmethodID methodID, ...);
+ jshort (JNICALL *CallShortMethodV)
+ (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
+ jshort (JNICALL *CallShortMethodA)
+ (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);
+
+ jint (JNICALL *CallIntMethod)
+ (JNIEnv *env, jobject obj, jmethodID methodID, ...);
+ jint (JNICALL *CallIntMethodV)
+ (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
+ jint (JNICALL *CallIntMethodA)
+ (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);
+
+ jlong (JNICALL *CallLongMethod)
+ (JNIEnv *env, jobject obj, jmethodID methodID, ...);
+ jlong (JNICALL *CallLongMethodV)
+ (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
+ jlong (JNICALL *CallLongMethodA)
+ (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);
+
+ jfloat (JNICALL *CallFloatMethod)
+ (JNIEnv *env, jobject obj, jmethodID methodID, ...);
+ jfloat (JNICALL *CallFloatMethodV)
+ (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
+ jfloat (JNICALL *CallFloatMethodA)
+ (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);
+
+ jdouble (JNICALL *CallDoubleMethod)
+ (JNIEnv *env, jobject obj, jmethodID methodID, ...);
+ jdouble (JNICALL *CallDoubleMethodV)
+ (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
+ jdouble (JNICALL *CallDoubleMethodA)
+ (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);
+
+ void (JNICALL *CallVoidMethod)
+ (JNIEnv *env, jobject obj, jmethodID methodID, ...);
+ void (JNICALL *CallVoidMethodV)
+ (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
+ void (JNICALL *CallVoidMethodA)
+ (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args);
+
+ jobject (JNICALL *CallNonvirtualObjectMethod)
+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
+ jobject (JNICALL *CallNonvirtualObjectMethodV)
+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+ va_list args);
+ jobject (JNICALL *CallNonvirtualObjectMethodA)
+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+ const jvalue * args);
+
+ jboolean (JNICALL *CallNonvirtualBooleanMethod)
+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
+ jboolean (JNICALL *CallNonvirtualBooleanMethodV)
+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+ va_list args);
+ jboolean (JNICALL *CallNonvirtualBooleanMethodA)
+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+ const jvalue * args);
+
+ jbyte (JNICALL *CallNonvirtualByteMethod)
+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
+ jbyte (JNICALL *CallNonvirtualByteMethodV)
+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+ va_list args);
+ jbyte (JNICALL *CallNonvirtualByteMethodA)
+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+ const jvalue *args);
+
+ jchar (JNICALL *CallNonvirtualCharMethod)
+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
+ jchar (JNICALL *CallNonvirtualCharMethodV)
+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+ va_list args);
+ jchar (JNICALL *CallNonvirtualCharMethodA)
+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+ const jvalue *args);
+
+ jshort (JNICALL *CallNonvirtualShortMethod)
+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
+ jshort (JNICALL *CallNonvirtualShortMethodV)
+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+ va_list args);
+ jshort (JNICALL *CallNonvirtualShortMethodA)
+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+ const jvalue *args);
+
+ jint (JNICALL *CallNonvirtualIntMethod)
+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
+ jint (JNICALL *CallNonvirtualIntMethodV)
+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+ va_list args);
+ jint (JNICALL *CallNonvirtualIntMethodA)
+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+ const jvalue *args);
+
+ jlong (JNICALL *CallNonvirtualLongMethod)
+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
+ jlong (JNICALL *CallNonvirtualLongMethodV)
+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+ va_list args);
+ jlong (JNICALL *CallNonvirtualLongMethodA)
+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+ const jvalue *args);
+
+ jfloat (JNICALL *CallNonvirtualFloatMethod)
+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
+ jfloat (JNICALL *CallNonvirtualFloatMethodV)
+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+ va_list args);
+ jfloat (JNICALL *CallNonvirtualFloatMethodA)
+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+ const jvalue *args);
+
+ jdouble (JNICALL *CallNonvirtualDoubleMethod)
+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
+ jdouble (JNICALL *CallNonvirtualDoubleMethodV)
+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+ va_list args);
+ jdouble (JNICALL *CallNonvirtualDoubleMethodA)
+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+ const jvalue *args);
+
+ void (JNICALL *CallNonvirtualVoidMethod)
+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
+ void (JNICALL *CallNonvirtualVoidMethodV)
+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+ va_list args);
+ void (JNICALL *CallNonvirtualVoidMethodA)
+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
+ const jvalue * args);
+
+ jfieldID (JNICALL *GetFieldID)
+ (JNIEnv *env, jclass clazz, const char *name, const char *sig);
+
+ jobject (JNICALL *GetObjectField)
+ (JNIEnv *env, jobject obj, jfieldID fieldID);
+ jboolean (JNICALL *GetBooleanField)
+ (JNIEnv *env, jobject obj, jfieldID fieldID);
+ jbyte (JNICALL *GetByteField)
+ (JNIEnv *env, jobject obj, jfieldID fieldID);
+ jchar (JNICALL *GetCharField)
+ (JNIEnv *env, jobject obj, jfieldID fieldID);
+ jshort (JNICALL *GetShortField)
+ (JNIEnv *env, jobject obj, jfieldID fieldID);
+ jint (JNICALL *GetIntField)
+ (JNIEnv *env, jobject obj, jfieldID fieldID);
+ jlong (JNICALL *GetLongField)
+ (JNIEnv *env, jobject obj, jfieldID fieldID);
+ jfloat (JNICALL *GetFloatField)
+ (JNIEnv *env, jobject obj, jfieldID fieldID);
+ jdouble (JNICALL *GetDoubleField)
+ (JNIEnv *env, jobject obj, jfieldID fieldID);
+
+ void (JNICALL *SetObjectField)
+ (JNIEnv *env, jobject obj, jfieldID fieldID, jobject val);
+ void (JNICALL *SetBooleanField)
+ (JNIEnv *env, jobject obj, jfieldID fieldID, jboolean val);
+ void (JNICALL *SetByteField)
+ (JNIEnv *env, jobject obj, jfieldID fieldID, jbyte val);
+ void (JNICALL *SetCharField)
+ (JNIEnv *env, jobject obj, jfieldID fieldID, jchar val);
+ void (JNICALL *SetShortField)
+ (JNIEnv *env, jobject obj, jfieldID fieldID, jshort val);
+ void (JNICALL *SetIntField)
+ (JNIEnv *env, jobject obj, jfieldID fieldID, jint val);
+ void (JNICALL *SetLongField)
+ (JNIEnv *env, jobject obj, jfieldID fieldID, jlong val);
+ void (JNICALL *SetFloatField)
+ (JNIEnv *env, jobject obj, jfieldID fieldID, jfloat val);
+ void (JNICALL *SetDoubleField)
+ (JNIEnv *env, jobject obj, jfieldID fieldID, jdouble val);
+
+ jmethodID (JNICALL *GetStaticMethodID)
+ (JNIEnv *env, jclass clazz, const char *name, const char *sig);
+
+ jobject (JNICALL *CallStaticObjectMethod)
+ (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
+ jobject (JNICALL *CallStaticObjectMethodV)
+ (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
+ jobject (JNICALL *CallStaticObjectMethodA)
+ (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
+
+ jboolean (JNICALL *CallStaticBooleanMethod)
+ (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
+ jboolean (JNICALL *CallStaticBooleanMethodV)
+ (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
+ jboolean (JNICALL *CallStaticBooleanMethodA)
+ (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
+
+ jbyte (JNICALL *CallStaticByteMethod)
+ (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
+ jbyte (JNICALL *CallStaticByteMethodV)
+ (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
+ jbyte (JNICALL *CallStaticByteMethodA)
+ (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
+
+ jchar (JNICALL *CallStaticCharMethod)
+ (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
+ jchar (JNICALL *CallStaticCharMethodV)
+ (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
+ jchar (JNICALL *CallStaticCharMethodA)
+ (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
+
+ jshort (JNICALL *CallStaticShortMethod)
+ (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
+ jshort (JNICALL *CallStaticShortMethodV)
+ (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
+ jshort (JNICALL *CallStaticShortMethodA)
+ (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
+
+ jint (JNICALL *CallStaticIntMethod)
+ (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
+ jint (JNICALL *CallStaticIntMethodV)
+ (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
+ jint (JNICALL *CallStaticIntMethodA)
+ (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
+
+ jlong (JNICALL *CallStaticLongMethod)
+ (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
+ jlong (JNICALL *CallStaticLongMethodV)
+ (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
+ jlong (JNICALL *CallStaticLongMethodA)
+ (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
+
+ jfloat (JNICALL *CallStaticFloatMethod)
+ (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
+ jfloat (JNICALL *CallStaticFloatMethodV)
+ (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
+ jfloat (JNICALL *CallStaticFloatMethodA)
+ (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
+
+ jdouble (JNICALL *CallStaticDoubleMethod)
+ (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
+ jdouble (JNICALL *CallStaticDoubleMethodV)
+ (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
+ jdouble (JNICALL *CallStaticDoubleMethodA)
+ (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
+
+ void (JNICALL *CallStaticVoidMethod)
+ (JNIEnv *env, jclass cls, jmethodID methodID, ...);
+ void (JNICALL *CallStaticVoidMethodV)
+ (JNIEnv *env, jclass cls, jmethodID methodID, va_list args);
+ void (JNICALL *CallStaticVoidMethodA)
+ (JNIEnv *env, jclass cls, jmethodID methodID, const jvalue * args);
+
+ jfieldID (JNICALL *GetStaticFieldID)
+ (JNIEnv *env, jclass clazz, const char *name, const char *sig);
+ jobject (JNICALL *GetStaticObjectField)
+ (JNIEnv *env, jclass clazz, jfieldID fieldID);
+ jboolean (JNICALL *GetStaticBooleanField)
+ (JNIEnv *env, jclass clazz, jfieldID fieldID);
+ jbyte (JNICALL *GetStaticByteField)
+ (JNIEnv *env, jclass clazz, jfieldID fieldID);
+ jchar (JNICALL *GetStaticCharField)
+ (JNIEnv *env, jclass clazz, jfieldID fieldID);
+ jshort (JNICALL *GetStaticShortField)
+ (JNIEnv *env, jclass clazz, jfieldID fieldID);
+ jint (JNICALL *GetStaticIntField)
+ (JNIEnv *env, jclass clazz, jfieldID fieldID);
+ jlong (JNICALL *GetStaticLongField)
+ (JNIEnv *env, jclass clazz, jfieldID fieldID);
+ jfloat (JNICALL *GetStaticFloatField)
+ (JNIEnv *env, jclass clazz, jfieldID fieldID);
+ jdouble (JNICALL *GetStaticDoubleField)
+ (JNIEnv *env, jclass clazz, jfieldID fieldID);
+
+ void (JNICALL *SetStaticObjectField)
+ (JNIEnv *env, jclass clazz, jfieldID fieldID, jobject value);
+ void (JNICALL *SetStaticBooleanField)
+ (JNIEnv *env, jclass clazz, jfieldID fieldID, jboolean value);
+ void (JNICALL *SetStaticByteField)
+ (JNIEnv *env, jclass clazz, jfieldID fieldID, jbyte value);
+ void (JNICALL *SetStaticCharField)
+ (JNIEnv *env, jclass clazz, jfieldID fieldID, jchar value);
+ void (JNICALL *SetStaticShortField)
+ (JNIEnv *env, jclass clazz, jfieldID fieldID, jshort value);
+ void (JNICALL *SetStaticIntField)
+ (JNIEnv *env, jclass clazz, jfieldID fieldID, jint value);
+ void (JNICALL *SetStaticLongField)
+ (JNIEnv *env, jclass clazz, jfieldID fieldID, jlong value);
+ void (JNICALL *SetStaticFloatField)
+ (JNIEnv *env, jclass clazz, jfieldID fieldID, jfloat value);
+ void (JNICALL *SetStaticDoubleField)
+ (JNIEnv *env, jclass clazz, jfieldID fieldID, jdouble value);
+
+ jstring (JNICALL *NewString)
+ (JNIEnv *env, const jchar *unicode, jsize len);
+ jsize (JNICALL *GetStringLength)
+ (JNIEnv *env, jstring str);
+ const jchar *(JNICALL *GetStringChars)
+ (JNIEnv *env, jstring str, jboolean *isCopy);
+ void (JNICALL *ReleaseStringChars)
+ (JNIEnv *env, jstring str, const jchar *chars);
+
+ jstring (JNICALL *NewStringUTF)
+ (JNIEnv *env, const char *utf);
+ jsize (JNICALL *GetStringUTFLength)
+ (JNIEnv *env, jstring str);
+ const char* (JNICALL *GetStringUTFChars)
+ (JNIEnv *env, jstring str, jboolean *isCopy);
+ void (JNICALL *ReleaseStringUTFChars)
+ (JNIEnv *env, jstring str, const char* chars);
+
+
+ jsize (JNICALL *GetArrayLength)
+ (JNIEnv *env, jarray array);
+
+ jobjectArray (JNICALL *NewObjectArray)
+ (JNIEnv *env, jsize len, jclass clazz, jobject init);
+ jobject (JNICALL *GetObjectArrayElement)
+ (JNIEnv *env, jobjectArray array, jsize index);
+ void (JNICALL *SetObjectArrayElement)
+ (JNIEnv *env, jobjectArray array, jsize index, jobject val);
+
+ jbooleanArray (JNICALL *NewBooleanArray)
+ (JNIEnv *env, jsize len);
+ jbyteArray (JNICALL *NewByteArray)
+ (JNIEnv *env, jsize len);
+ jcharArray (JNICALL *NewCharArray)
+ (JNIEnv *env, jsize len);
+ jshortArray (JNICALL *NewShortArray)
+ (JNIEnv *env, jsize len);
+ jintArray (JNICALL *NewIntArray)
+ (JNIEnv *env, jsize len);
+ jlongArray (JNICALL *NewLongArray)
+ (JNIEnv *env, jsize len);
+ jfloatArray (JNICALL *NewFloatArray)
+ (JNIEnv *env, jsize len);
+ jdoubleArray (JNICALL *NewDoubleArray)
+ (JNIEnv *env, jsize len);
+
+ jboolean * (JNICALL *GetBooleanArrayElements)
+ (JNIEnv *env, jbooleanArray array, jboolean *isCopy);
+ jbyte * (JNICALL *GetByteArrayElements)
+ (JNIEnv *env, jbyteArray array, jboolean *isCopy);
+ jchar * (JNICALL *GetCharArrayElements)
+ (JNIEnv *env, jcharArray array, jboolean *isCopy);
+ jshort * (JNICALL *GetShortArrayElements)
+ (JNIEnv *env, jshortArray array, jboolean *isCopy);
+ jint * (JNICALL *GetIntArrayElements)
+ (JNIEnv *env, jintArray array, jboolean *isCopy);
+ jlong * (JNICALL *GetLongArrayElements)
+ (JNIEnv *env, jlongArray array, jboolean *isCopy);
+ jfloat * (JNICALL *GetFloatArrayElements)
+ (JNIEnv *env, jfloatArray array, jboolean *isCopy);
+ jdouble * (JNICALL *GetDoubleArrayElements)
+ (JNIEnv *env, jdoubleArray array, jboolean *isCopy);
+
+ void (JNICALL *ReleaseBooleanArrayElements)
+ (JNIEnv *env, jbooleanArray array, jboolean *elems, jint mode);
+ void (JNICALL *ReleaseByteArrayElements)
+ (JNIEnv *env, jbyteArray array, jbyte *elems, jint mode);
+ void (JNICALL *ReleaseCharArrayElements)
+ (JNIEnv *env, jcharArray array, jchar *elems, jint mode);
+ void (JNICALL *ReleaseShortArrayElements)
+ (JNIEnv *env, jshortArray array, jshort *elems, jint mode);
+ void (JNICALL *ReleaseIntArrayElements)
+ (JNIEnv *env, jintArray array, jint *elems, jint mode);
+ void (JNICALL *ReleaseLongArrayElements)
+ (JNIEnv *env, jlongArray array, jlong *elems, jint mode);
+ void (JNICALL *ReleaseFloatArrayElements)
+ (JNIEnv *env, jfloatArray array, jfloat *elems, jint mode);
+ void (JNICALL *ReleaseDoubleArrayElements)
+ (JNIEnv *env, jdoubleArray array, jdouble *elems, jint mode);
+
+ void (JNICALL *GetBooleanArrayRegion)
+ (JNIEnv *env, jbooleanArray array, jsize start, jsize l, jboolean *buf);
+ void (JNICALL *GetByteArrayRegion)
+ (JNIEnv *env, jbyteArray array, jsize start, jsize len, jbyte *buf);
+ void (JNICALL *GetCharArrayRegion)
+ (JNIEnv *env, jcharArray array, jsize start, jsize len, jchar *buf);
+ void (JNICALL *GetShortArrayRegion)
+ (JNIEnv *env, jshortArray array, jsize start, jsize len, jshort *buf);
+ void (JNICALL *GetIntArrayRegion)
+ (JNIEnv *env, jintArray array, jsize start, jsize len, jint *buf);
+ void (JNICALL *GetLongArrayRegion)
+ (JNIEnv *env, jlongArray array, jsize start, jsize len, jlong *buf);
+ void (JNICALL *GetFloatArrayRegion)
+ (JNIEnv *env, jfloatArray array, jsize start, jsize len, jfloat *buf);
+ void (JNICALL *GetDoubleArrayRegion)
+ (JNIEnv *env, jdoubleArray array, jsize start, jsize len, jdouble *buf);
+
+ void (JNICALL *SetBooleanArrayRegion)
+ (JNIEnv *env, jbooleanArray array, jsize start, jsize l, const jboolean *buf);
+ void (JNICALL *SetByteArrayRegion)
+ (JNIEnv *env, jbyteArray array, jsize start, jsize len, const jbyte *buf);
+ void (JNICALL *SetCharArrayRegion)
+ (JNIEnv *env, jcharArray array, jsize start, jsize len, const jchar *buf);
+ void (JNICALL *SetShortArrayRegion)
+ (JNIEnv *env, jshortArray array, jsize start, jsize len, const jshort *buf);
+ void (JNICALL *SetIntArrayRegion)
+ (JNIEnv *env, jintArray array, jsize start, jsize len, const jint *buf);
+ void (JNICALL *SetLongArrayRegion)
+ (JNIEnv *env, jlongArray array, jsize start, jsize len, const jlong *buf);
+ void (JNICALL *SetFloatArrayRegion)
+ (JNIEnv *env, jfloatArray array, jsize start, jsize len, const jfloat *buf);
+ void (JNICALL *SetDoubleArrayRegion)
+ (JNIEnv *env, jdoubleArray array, jsize start, jsize len, const jdouble *buf);
+
+ jint (JNICALL *RegisterNatives)
+ (JNIEnv *env, jclass clazz, const JNINativeMethod *methods,
+ jint nMethods);
+ jint (JNICALL *UnregisterNatives)
+ (JNIEnv *env, jclass clazz);
+
+ jint (JNICALL *MonitorEnter)
+ (JNIEnv *env, jobject obj);
+ jint (JNICALL *MonitorExit)
+ (JNIEnv *env, jobject obj);
+
+ jint (JNICALL *GetJavaVM)
+ (JNIEnv *env, JavaVM **vm);
+
+ void (JNICALL *GetStringRegion)
+ (JNIEnv *env, jstring str, jsize start, jsize len, jchar *buf);
+ void (JNICALL *GetStringUTFRegion)
+ (JNIEnv *env, jstring str, jsize start, jsize len, char *buf);
+
+ void * (JNICALL *GetPrimitiveArrayCritical)
+ (JNIEnv *env, jarray array, jboolean *isCopy);
+ void (JNICALL *ReleasePrimitiveArrayCritical)
+ (JNIEnv *env, jarray array, void *carray, jint mode);
+
+ const jchar * (JNICALL *GetStringCritical)
+ (JNIEnv *env, jstring string, jboolean *isCopy);
+ void (JNICALL *ReleaseStringCritical)
+ (JNIEnv *env, jstring string, const jchar *cstring);
+
+ jweak (JNICALL *NewWeakGlobalRef)
+ (JNIEnv *env, jobject obj);
+ void (JNICALL *DeleteWeakGlobalRef)
+ (JNIEnv *env, jweak ref);
+
+ jboolean (JNICALL *ExceptionCheck)
+ (JNIEnv *env);
+
+ jobject (JNICALL *NewDirectByteBuffer)
+ (JNIEnv* env, void* address, jlong capacity);
+ void* (JNICALL *GetDirectBufferAddress)
+ (JNIEnv* env, jobject buf);
+ jlong (JNICALL *GetDirectBufferCapacity)
+ (JNIEnv* env, jobject buf);
+
+ /* New JNI 1.6 Features */
+
+ jobjectRefType (JNICALL *GetObjectRefType)
+ (JNIEnv* env, jobject obj);
+};
+
+struct JNIEnv_ {
+ const struct JNINativeInterface_ *functions;
+#ifdef __cplusplus
+
+ jint GetVersion() {
+ return functions->GetVersion(this);
+ }
+ jclass DefineClass(const char *name, jobject loader, const jbyte *buf,
+ jsize len) {
+ return functions->DefineClass(this, name, loader, buf, len);
+ }
+ jclass FindClass(const char *name) {
+ return functions->FindClass(this, name);
+ }
+ jmethodID FromReflectedMethod(jobject method) {
+ return functions->FromReflectedMethod(this,method);
+ }
+ jfieldID FromReflectedField(jobject field) {
+ return functions->FromReflectedField(this,field);
+ }
+
+ jobject ToReflectedMethod(jclass cls, jmethodID methodID, jboolean isStatic) {
+ return functions->ToReflectedMethod(this, cls, methodID, isStatic);
+ }
+
+ jclass GetSuperclass(jclass sub) {
+ return functions->GetSuperclass(this, sub);
+ }
+ jboolean IsAssignableFrom(jclass sub, jclass sup) {
+ return functions->IsAssignableFrom(this, sub, sup);
+ }
+
+ jobject ToReflectedField(jclass cls, jfieldID fieldID, jboolean isStatic) {
+ return functions->ToReflectedField(this,cls,fieldID,isStatic);
+ }
+
+ jint Throw(jthrowable obj) {
+ return functions->Throw(this, obj);
+ }
+ jint ThrowNew(jclass clazz, const char *msg) {
+ return functions->ThrowNew(this, clazz, msg);
+ }
+ jthrowable ExceptionOccurred() {
+ return functions->ExceptionOccurred(this);
+ }
+ void ExceptionDescribe() {
+ functions->ExceptionDescribe(this);
+ }
+ void ExceptionClear() {
+ functions->ExceptionClear(this);
+ }
+ void FatalError(const char *msg) {
+ functions->FatalError(this, msg);
+ }
+
+ jint PushLocalFrame(jint capacity) {
+ return functions->PushLocalFrame(this,capacity);
+ }
+ jobject PopLocalFrame(jobject result) {
+ return functions->PopLocalFrame(this,result);
+ }
+
+ jobject NewGlobalRef(jobject lobj) {
+ return functions->NewGlobalRef(this,lobj);
+ }
+ void DeleteGlobalRef(jobject gref) {
+ functions->DeleteGlobalRef(this,gref);
+ }
+ void DeleteLocalRef(jobject obj) {
+ functions->DeleteLocalRef(this, obj);
+ }
+
+ jboolean IsSameObject(jobject obj1, jobject obj2) {
+ return functions->IsSameObject(this,obj1,obj2);
+ }
+
+ jobject NewLocalRef(jobject ref) {
+ return functions->NewLocalRef(this,ref);
+ }
+ jint EnsureLocalCapacity(jint capacity) {
+ return functions->EnsureLocalCapacity(this,capacity);
+ }
+
+ jobject AllocObject(jclass clazz) {
+ return functions->AllocObject(this,clazz);
+ }
+ jobject NewObject(jclass clazz, jmethodID methodID, ...) {
+ va_list args;
+ jobject result;
+ va_start(args, methodID);
+ result = functions->NewObjectV(this,clazz,methodID,args);
+ va_end(args);
+ return result;
+ }
+ jobject NewObjectV(jclass clazz, jmethodID methodID,
+ va_list args) {
+ return functions->NewObjectV(this,clazz,methodID,args);
+ }
+ jobject NewObjectA(jclass clazz, jmethodID methodID,
+ const jvalue *args) {
+ return functions->NewObjectA(this,clazz,methodID,args);
+ }
+
+ jclass GetObjectClass(jobject obj) {
+ return functions->GetObjectClass(this,obj);
+ }
+ jboolean IsInstanceOf(jobject obj, jclass clazz) {
+ return functions->IsInstanceOf(this,obj,clazz);
+ }
+
+ jmethodID GetMethodID(jclass clazz, const char *name,
+ const char *sig) {
+ return functions->GetMethodID(this,clazz,name,sig);
+ }
+
+ jobject CallObjectMethod(jobject obj, jmethodID methodID, ...) {
+ va_list args;
+ jobject result;
+ va_start(args,methodID);
+ result = functions->CallObjectMethodV(this,obj,methodID,args);
+ va_end(args);
+ return result;
+ }
+ jobject CallObjectMethodV(jobject obj, jmethodID methodID,
+ va_list args) {
+ return functions->CallObjectMethodV(this,obj,methodID,args);
+ }
+ jobject CallObjectMethodA(jobject obj, jmethodID methodID,
+ const jvalue * args) {
+ return functions->CallObjectMethodA(this,obj,methodID,args);
+ }
+
+ jboolean CallBooleanMethod(jobject obj,
+ jmethodID methodID, ...) {
+ va_list args;
+ jboolean result;
+ va_start(args,methodID);
+ result = functions->CallBooleanMethodV(this,obj,methodID,args);
+ va_end(args);
+ return result;
+ }
+ jboolean CallBooleanMethodV(jobject obj, jmethodID methodID,
+ va_list args) {
+ return functions->CallBooleanMethodV(this,obj,methodID,args);
+ }
+ jboolean CallBooleanMethodA(jobject obj, jmethodID methodID,
+ const jvalue * args) {
+ return functions->CallBooleanMethodA(this,obj,methodID, args);
+ }
+
+ jbyte CallByteMethod(jobject obj, jmethodID methodID, ...) {
+ va_list args;
+ jbyte result;
+ va_start(args,methodID);
+ result = functions->CallByteMethodV(this,obj,methodID,args);
+ va_end(args);
+ return result;
+ }
+ jbyte CallByteMethodV(jobject obj, jmethodID methodID,
+ va_list args) {
+ return functions->CallByteMethodV(this,obj,methodID,args);
+ }
+ jbyte CallByteMethodA(jobject obj, jmethodID methodID,
+ const jvalue * args) {
+ return functions->CallByteMethodA(this,obj,methodID,args);
+ }
+
+ jchar CallCharMethod(jobject obj, jmethodID methodID, ...) {
+ va_list args;
+ jchar result;
+ va_start(args,methodID);
+ result = functions->CallCharMethodV(this,obj,methodID,args);
+ va_end(args);
+ return result;
+ }
+ jchar CallCharMethodV(jobject obj, jmethodID methodID,
+ va_list args) {
+ return functions->CallCharMethodV(this,obj,methodID,args);
+ }
+ jchar CallCharMethodA(jobject obj, jmethodID methodID,
+ const jvalue * args) {
+ return functions->CallCharMethodA(this,obj,methodID,args);
+ }
+
+ jshort CallShortMethod(jobject obj, jmethodID methodID, ...) {
+ va_list args;
+ jshort result;
+ va_start(args,methodID);
+ result = functions->CallShortMethodV(this,obj,methodID,args);
+ va_end(args);
+ return result;
+ }
+ jshort CallShortMethodV(jobject obj, jmethodID methodID,
+ va_list args) {
+ return functions->CallShortMethodV(this,obj,methodID,args);
+ }
+ jshort CallShortMethodA(jobject obj, jmethodID methodID,
+ const jvalue * args) {
+ return functions->CallShortMethodA(this,obj,methodID,args);
+ }
+
+ jint CallIntMethod(jobject obj, jmethodID methodID, ...) {
+ va_list args;
+ jint result;
+ va_start(args,methodID);
+ result = functions->CallIntMethodV(this,obj,methodID,args);
+ va_end(args);
+ return result;
+ }
+ jint CallIntMethodV(jobject obj, jmethodID methodID,
+ va_list args) {
+ return functions->CallIntMethodV(this,obj,methodID,args);
+ }
+ jint CallIntMethodA(jobject obj, jmethodID methodID,
+ const jvalue * args) {
+ return functions->CallIntMethodA(this,obj,methodID,args);
+ }
+
+ jlong CallLongMethod(jobject obj, jmethodID methodID, ...) {
+ va_list args;
+ jlong result;
+ va_start(args,methodID);
+ result = functions->CallLongMethodV(this,obj,methodID,args);
+ va_end(args);
+ return result;
+ }
+ jlong CallLongMethodV(jobject obj, jmethodID methodID,
+ va_list args) {
+ return functions->CallLongMethodV(this,obj,methodID,args);
+ }
+ jlong CallLongMethodA(jobject obj, jmethodID methodID,
+ const jvalue * args) {
+ return functions->CallLongMethodA(this,obj,methodID,args);
+ }
+
+ jfloat CallFloatMethod(jobject obj, jmethodID methodID, ...) {
+ va_list args;
+ jfloat result;
+ va_start(args,methodID);
+ result = functions->CallFloatMethodV(this,obj,methodID,args);
+ va_end(args);
+ return result;
+ }
+ jfloat CallFloatMethodV(jobject obj, jmethodID methodID,
+ va_list args) {
+ return functions->CallFloatMethodV(this,obj,methodID,args);
+ }
+ jfloat CallFloatMethodA(jobject obj, jmethodID methodID,
+ const jvalue * args) {
+ return functions->CallFloatMethodA(this,obj,methodID,args);
+ }
+
+ jdouble CallDoubleMethod(jobject obj, jmethodID methodID, ...) {
+ va_list args;
+ jdouble result;
+ va_start(args,methodID);
+ result = functions->CallDoubleMethodV(this,obj,methodID,args);
+ va_end(args);
+ return result;
+ }
+ jdouble CallDoubleMethodV(jobject obj, jmethodID methodID,
+ va_list args) {
+ return functions->CallDoubleMethodV(this,obj,methodID,args);
+ }
+ jdouble CallDoubleMethodA(jobject obj, jmethodID methodID,
+ const jvalue * args) {
+ return functions->CallDoubleMethodA(this,obj,methodID,args);
+ }
+
+ void CallVoidMethod(jobject obj, jmethodID methodID, ...) {
+ va_list args;
+ va_start(args,methodID);
+ functions->CallVoidMethodV(this,obj,methodID,args);
+ va_end(args);
+ }
+ void CallVoidMethodV(jobject obj, jmethodID methodID,
+ va_list args) {
+ functions->CallVoidMethodV(this,obj,methodID,args);
+ }
+ void CallVoidMethodA(jobject obj, jmethodID methodID,
+ const jvalue * args) {
+ functions->CallVoidMethodA(this,obj,methodID,args);
+ }
+
+ jobject CallNonvirtualObjectMethod(jobject obj, jclass clazz,
+ jmethodID methodID, ...) {
+ va_list args;
+ jobject result;
+ va_start(args,methodID);
+ result = functions->CallNonvirtualObjectMethodV(this,obj,clazz,
+ methodID,args);
+ va_end(args);
+ return result;
+ }
+ jobject CallNonvirtualObjectMethodV(jobject obj, jclass clazz,
+ jmethodID methodID, va_list args) {
+ return functions->CallNonvirtualObjectMethodV(this,obj,clazz,
+ methodID,args);
+ }
+ jobject CallNonvirtualObjectMethodA(jobject obj, jclass clazz,
+ jmethodID methodID, const jvalue * args) {
+ return functions->CallNonvirtualObjectMethodA(this,obj,clazz,
+ methodID,args);
+ }
+
+ jboolean CallNonvirtualBooleanMethod(jobject obj, jclass clazz,
+ jmethodID methodID, ...) {
+ va_list args;
+ jboolean result;
+ va_start(args,methodID);
+ result = functions->CallNonvirtualBooleanMethodV(this,obj,clazz,
+ methodID,args);
+ va_end(args);
+ return result;
+ }
+ jboolean CallNonvirtualBooleanMethodV(jobject obj, jclass clazz,
+ jmethodID methodID, va_list args) {
+ return functions->CallNonvirtualBooleanMethodV(this,obj,clazz,
+ methodID,args);
+ }
+ jboolean CallNonvirtualBooleanMethodA(jobject obj, jclass clazz,
+ jmethodID methodID, const jvalue * args) {
+ return functions->CallNonvirtualBooleanMethodA(this,obj,clazz,
+ methodID, args);
+ }
+
+ jbyte CallNonvirtualByteMethod(jobject obj, jclass clazz,
+ jmethodID methodID, ...) {
+ va_list args;
+ jbyte result;
+ va_start(args,methodID);
+ result = functions->CallNonvirtualByteMethodV(this,obj,clazz,
+ methodID,args);
+ va_end(args);
+ return result;
+ }
+ jbyte CallNonvirtualByteMethodV(jobject obj, jclass clazz,
+ jmethodID methodID, va_list args) {
+ return functions->CallNonvirtualByteMethodV(this,obj,clazz,
+ methodID,args);
+ }
+ jbyte CallNonvirtualByteMethodA(jobject obj, jclass clazz,
+ jmethodID methodID, const jvalue * args) {
+ return functions->CallNonvirtualByteMethodA(this,obj,clazz,
+ methodID,args);
+ }
+
+ jchar CallNonvirtualCharMethod(jobject obj, jclass clazz,
+ jmethodID methodID, ...) {
+ va_list args;
+ jchar result;
+ va_start(args,methodID);
+ result = functions->CallNonvirtualCharMethodV(this,obj,clazz,
+ methodID,args);
+ va_end(args);
+ return result;
+ }
+ jchar CallNonvirtualCharMethodV(jobject obj, jclass clazz,
+ jmethodID methodID, va_list args) {
+ return functions->CallNonvirtualCharMethodV(this,obj,clazz,
+ methodID,args);
+ }
+ jchar CallNonvirtualCharMethodA(jobject obj, jclass clazz,
+ jmethodID methodID, const jvalue * args) {
+ return functions->CallNonvirtualCharMethodA(this,obj,clazz,
+ methodID,args);
+ }
+
+ jshort CallNonvirtualShortMethod(jobject obj, jclass clazz,
+ jmethodID methodID, ...) {
+ va_list args;
+ jshort result;
+ va_start(args,methodID);
+ result = functions->CallNonvirtualShortMethodV(this,obj,clazz,
+ methodID,args);
+ va_end(args);
+ return result;
+ }
+ jshort CallNonvirtualShortMethodV(jobject obj, jclass clazz,
+ jmethodID methodID, va_list args) {
+ return functions->CallNonvirtualShortMethodV(this,obj,clazz,
+ methodID,args);
+ }
+ jshort CallNonvirtualShortMethodA(jobject obj, jclass clazz,
+ jmethodID methodID, const jvalue * args) {
+ return functions->CallNonvirtualShortMethodA(this,obj,clazz,
+ methodID,args);
+ }
+
+ jint CallNonvirtualIntMethod(jobject obj, jclass clazz,
+ jmethodID methodID, ...) {
+ va_list args;
+ jint result;
+ va_start(args,methodID);
+ result = functions->CallNonvirtualIntMethodV(this,obj,clazz,
+ methodID,args);
+ va_end(args);
+ return result;
+ }
+ jint CallNonvirtualIntMethodV(jobject obj, jclass clazz,
+ jmethodID methodID, va_list args) {
+ return functions->CallNonvirtualIntMethodV(this,obj,clazz,
+ methodID,args);
+ }
+ jint CallNonvirtualIntMethodA(jobject obj, jclass clazz,
+ jmethodID methodID, const jvalue * args) {
+ return functions->CallNonvirtualIntMethodA(this,obj,clazz,
+ methodID,args);
+ }
+
+ jlong CallNonvirtualLongMethod(jobject obj, jclass clazz,
+ jmethodID methodID, ...) {
+ va_list args;
+ jlong result;
+ va_start(args,methodID);
+ result = functions->CallNonvirtualLongMethodV(this,obj,clazz,
+ methodID,args);
+ va_end(args);
+ return result;
+ }
+ jlong CallNonvirtualLongMethodV(jobject obj, jclass clazz,
+ jmethodID methodID, va_list args) {
+ return functions->CallNonvirtualLongMethodV(this,obj,clazz,
+ methodID,args);
+ }
+ jlong CallNonvirtualLongMethodA(jobject obj, jclass clazz,
+ jmethodID methodID, const jvalue * args) {
+ return functions->CallNonvirtualLongMethodA(this,obj,clazz,
+ methodID,args);
+ }
+
+ jfloat CallNonvirtualFloatMethod(jobject obj, jclass clazz,
+ jmethodID methodID, ...) {
+ va_list args;
+ jfloat result;
+ va_start(args,methodID);
+ result = functions->CallNonvirtualFloatMethodV(this,obj,clazz,
+ methodID,args);
+ va_end(args);
+ return result;
+ }
+ jfloat CallNonvirtualFloatMethodV(jobject obj, jclass clazz,
+ jmethodID methodID,
+ va_list args) {
+ return functions->CallNonvirtualFloatMethodV(this,obj,clazz,
+ methodID,args);
+ }
+ jfloat CallNonvirtualFloatMethodA(jobject obj, jclass clazz,
+ jmethodID methodID,
+ const jvalue * args) {
+ return functions->CallNonvirtualFloatMethodA(this,obj,clazz,
+ methodID,args);
+ }
+
+ jdouble CallNonvirtualDoubleMethod(jobject obj, jclass clazz,
+ jmethodID methodID, ...) {
+ va_list args;
+ jdouble result;
+ va_start(args,methodID);
+ result = functions->CallNonvirtualDoubleMethodV(this,obj,clazz,
+ methodID,args);
+ va_end(args);
+ return result;
+ }
+ jdouble CallNonvirtualDoubleMethodV(jobject obj, jclass clazz,
+ jmethodID methodID,
+ va_list args) {
+ return functions->CallNonvirtualDoubleMethodV(this,obj,clazz,
+ methodID,args);
+ }
+ jdouble CallNonvirtualDoubleMethodA(jobject obj, jclass clazz,
+ jmethodID methodID,
+ const jvalue * args) {
+ return functions->CallNonvirtualDoubleMethodA(this,obj,clazz,
+ methodID,args);
+ }
+
+ void CallNonvirtualVoidMethod(jobject obj, jclass clazz,
+ jmethodID methodID, ...) {
+ va_list args;
+ va_start(args,methodID);
+ functions->CallNonvirtualVoidMethodV(this,obj,clazz,methodID,args);
+ va_end(args);
+ }
+ void CallNonvirtualVoidMethodV(jobject obj, jclass clazz,
+ jmethodID methodID,
+ va_list args) {
+ functions->CallNonvirtualVoidMethodV(this,obj,clazz,methodID,args);
+ }
+ void CallNonvirtualVoidMethodA(jobject obj, jclass clazz,
+ jmethodID methodID,
+ const jvalue * args) {
+ functions->CallNonvirtualVoidMethodA(this,obj,clazz,methodID,args);
+ }
+
+ jfieldID GetFieldID(jclass clazz, const char *name,
+ const char *sig) {
+ return functions->GetFieldID(this,clazz,name,sig);
+ }
+
+ jobject GetObjectField(jobject obj, jfieldID fieldID) {
+ return functions->GetObjectField(this,obj,fieldID);
+ }
+ jboolean GetBooleanField(jobject obj, jfieldID fieldID) {
+ return functions->GetBooleanField(this,obj,fieldID);
+ }
+ jbyte GetByteField(jobject obj, jfieldID fieldID) {
+ return functions->GetByteField(this,obj,fieldID);
+ }
+ jchar GetCharField(jobject obj, jfieldID fieldID) {
+ return functions->GetCharField(this,obj,fieldID);
+ }
+ jshort GetShortField(jobject obj, jfieldID fieldID) {
+ return functions->GetShortField(this,obj,fieldID);
+ }
+ jint GetIntField(jobject obj, jfieldID fieldID) {
+ return functions->GetIntField(this,obj,fieldID);
+ }
+ jlong GetLongField(jobject obj, jfieldID fieldID) {
+ return functions->GetLongField(this,obj,fieldID);
+ }
+ jfloat GetFloatField(jobject obj, jfieldID fieldID) {
+ return functions->GetFloatField(this,obj,fieldID);
+ }
+ jdouble GetDoubleField(jobject obj, jfieldID fieldID) {
+ return functions->GetDoubleField(this,obj,fieldID);
+ }
+
+ void SetObjectField(jobject obj, jfieldID fieldID, jobject val) {
+ functions->SetObjectField(this,obj,fieldID,val);
+ }
+ void SetBooleanField(jobject obj, jfieldID fieldID,
+ jboolean val) {
+ functions->SetBooleanField(this,obj,fieldID,val);
+ }
+ void SetByteField(jobject obj, jfieldID fieldID,
+ jbyte val) {
+ functions->SetByteField(this,obj,fieldID,val);
+ }
+ void SetCharField(jobject obj, jfieldID fieldID,
+ jchar val) {
+ functions->SetCharField(this,obj,fieldID,val);
+ }
+ void SetShortField(jobject obj, jfieldID fieldID,
+ jshort val) {
+ functions->SetShortField(this,obj,fieldID,val);
+ }
+ void SetIntField(jobject obj, jfieldID fieldID,
+ jint val) {
+ functions->SetIntField(this,obj,fieldID,val);
+ }
+ void SetLongField(jobject obj, jfieldID fieldID,
+ jlong val) {
+ functions->SetLongField(this,obj,fieldID,val);
+ }
+ void SetFloatField(jobject obj, jfieldID fieldID,
+ jfloat val) {
+ functions->SetFloatField(this,obj,fieldID,val);
+ }
+ void SetDoubleField(jobject obj, jfieldID fieldID,
+ jdouble val) {
+ functions->SetDoubleField(this,obj,fieldID,val);
+ }
+
+ jmethodID GetStaticMethodID(jclass clazz, const char *name,
+ const char *sig) {
+ return functions->GetStaticMethodID(this,clazz,name,sig);
+ }
+
+ jobject CallStaticObjectMethod(jclass clazz, jmethodID methodID,
+ ...) {
+ va_list args;
+ jobject result;
+ va_start(args,methodID);
+ result = functions->CallStaticObjectMethodV(this,clazz,methodID,args);
+ va_end(args);
+ return result;
+ }
+ jobject CallStaticObjectMethodV(jclass clazz, jmethodID methodID,
+ va_list args) {
+ return functions->CallStaticObjectMethodV(this,clazz,methodID,args);
+ }
+ jobject CallStaticObjectMethodA(jclass clazz, jmethodID methodID,
+ const jvalue *args) {
+ return functions->CallStaticObjectMethodA(this,clazz,methodID,args);
+ }
+
+ jboolean CallStaticBooleanMethod(jclass clazz,
+ jmethodID methodID, ...) {
+ va_list args;
+ jboolean result;
+ va_start(args,methodID);
+ result = functions->CallStaticBooleanMethodV(this,clazz,methodID,args);
+ va_end(args);
+ return result;
+ }
+ jboolean CallStaticBooleanMethodV(jclass clazz,
+ jmethodID methodID, va_list args) {
+ return functions->CallStaticBooleanMethodV(this,clazz,methodID,args);
+ }
+ jboolean CallStaticBooleanMethodA(jclass clazz,
+ jmethodID methodID, const jvalue *args) {
+ return functions->CallStaticBooleanMethodA(this,clazz,methodID,args);
+ }
+
+ jbyte CallStaticByteMethod(jclass clazz,
+ jmethodID methodID, ...) {
+ va_list args;
+ jbyte result;
+ va_start(args,methodID);
+ result = functions->CallStaticByteMethodV(this,clazz,methodID,args);
+ va_end(args);
+ return result;
+ }
+ jbyte CallStaticByteMethodV(jclass clazz,
+ jmethodID methodID, va_list args) {
+ return functions->CallStaticByteMethodV(this,clazz,methodID,args);
+ }
+ jbyte CallStaticByteMethodA(jclass clazz,
+ jmethodID methodID, const jvalue *args) {
+ return functions->CallStaticByteMethodA(this,clazz,methodID,args);
+ }
+
+ jchar CallStaticCharMethod(jclass clazz,
+ jmethodID methodID, ...) {
+ va_list args;
+ jchar result;
+ va_start(args,methodID);
+ result = functions->CallStaticCharMethodV(this,clazz,methodID,args);
+ va_end(args);
+ return result;
+ }
+ jchar CallStaticCharMethodV(jclass clazz,
+ jmethodID methodID, va_list args) {
+ return functions->CallStaticCharMethodV(this,clazz,methodID,args);
+ }
+ jchar CallStaticCharMethodA(jclass clazz,
+ jmethodID methodID, const jvalue *args) {
+ return functions->CallStaticCharMethodA(this,clazz,methodID,args);
+ }
+
+ jshort CallStaticShortMethod(jclass clazz,
+ jmethodID methodID, ...) {
+ va_list args;
+ jshort result;
+ va_start(args,methodID);
+ result = functions->CallStaticShortMethodV(this,clazz,methodID,args);
+ va_end(args);
+ return result;
+ }
+ jshort CallStaticShortMethodV(jclass clazz,
+ jmethodID methodID, va_list args) {
+ return functions->CallStaticShortMethodV(this,clazz,methodID,args);
+ }
+ jshort CallStaticShortMethodA(jclass clazz,
+ jmethodID methodID, const jvalue *args) {
+ return functions->CallStaticShortMethodA(this,clazz,methodID,args);
+ }
+
+ jint CallStaticIntMethod(jclass clazz,
+ jmethodID methodID, ...) {
+ va_list args;
+ jint result;
+ va_start(args,methodID);
+ result = functions->CallStaticIntMethodV(this,clazz,methodID,args);
+ va_end(args);
+ return result;
+ }
+ jint CallStaticIntMethodV(jclass clazz,
+ jmethodID methodID, va_list args) {
+ return functions->CallStaticIntMethodV(this,clazz,methodID,args);
+ }
+ jint CallStaticIntMethodA(jclass clazz,
+ jmethodID methodID, const jvalue *args) {
+ return functions->CallStaticIntMethodA(this,clazz,methodID,args);
+ }
+
+ jlong CallStaticLongMethod(jclass clazz,
+ jmethodID methodID, ...) {
+ va_list args;
+ jlong result;
+ va_start(args,methodID);
+ result = functions->CallStaticLongMethodV(this,clazz,methodID,args);
+ va_end(args);
+ return result;
+ }
+ jlong CallStaticLongMethodV(jclass clazz,
+ jmethodID methodID, va_list args) {
+ return functions->CallStaticLongMethodV(this,clazz,methodID,args);
+ }
+ jlong CallStaticLongMethodA(jclass clazz,
+ jmethodID methodID, const jvalue *args) {
+ return functions->CallStaticLongMethodA(this,clazz,methodID,args);
+ }
+
+ jfloat CallStaticFloatMethod(jclass clazz,
+ jmethodID methodID, ...) {
+ va_list args;
+ jfloat result;
+ va_start(args,methodID);
+ result = functions->CallStaticFloatMethodV(this,clazz,methodID,args);
+ va_end(args);
+ return result;
+ }
+ jfloat CallStaticFloatMethodV(jclass clazz,
+ jmethodID methodID, va_list args) {
+ return functions->CallStaticFloatMethodV(this,clazz,methodID,args);
+ }
+ jfloat CallStaticFloatMethodA(jclass clazz,
+ jmethodID methodID, const jvalue *args) {
+ return functions->CallStaticFloatMethodA(this,clazz,methodID,args);
+ }
+
+ jdouble CallStaticDoubleMethod(jclass clazz,
+ jmethodID methodID, ...) {
+ va_list args;
+ jdouble result;
+ va_start(args,methodID);
+ result = functions->CallStaticDoubleMethodV(this,clazz,methodID,args);
+ va_end(args);
+ return result;
+ }
+ jdouble CallStaticDoubleMethodV(jclass clazz,
+ jmethodID methodID, va_list args) {
+ return functions->CallStaticDoubleMethodV(this,clazz,methodID,args);
+ }
+ jdouble CallStaticDoubleMethodA(jclass clazz,
+ jmethodID methodID, const jvalue *args) {
+ return functions->CallStaticDoubleMethodA(this,clazz,methodID,args);
+ }
+
+ void CallStaticVoidMethod(jclass cls, jmethodID methodID, ...) {
+ va_list args;
+ va_start(args,methodID);
+ functions->CallStaticVoidMethodV(this,cls,methodID,args);
+ va_end(args);
+ }
+ void CallStaticVoidMethodV(jclass cls, jmethodID methodID,
+ va_list args) {
+ functions->CallStaticVoidMethodV(this,cls,methodID,args);
+ }
+ void CallStaticVoidMethodA(jclass cls, jmethodID methodID,
+ const jvalue * args) {
+ functions->CallStaticVoidMethodA(this,cls,methodID,args);
+ }
+
+ jfieldID GetStaticFieldID(jclass clazz, const char *name,
+ const char *sig) {
+ return functions->GetStaticFieldID(this,clazz,name,sig);
+ }
+ jobject GetStaticObjectField(jclass clazz, jfieldID fieldID) {
+ return functions->GetStaticObjectField(this,clazz,fieldID);
+ }
+ jboolean GetStaticBooleanField(jclass clazz, jfieldID fieldID) {
+ return functions->GetStaticBooleanField(this,clazz,fieldID);
+ }
+ jbyte GetStaticByteField(jclass clazz, jfieldID fieldID) {
+ return functions->GetStaticByteField(this,clazz,fieldID);
+ }
+ jchar GetStaticCharField(jclass clazz, jfieldID fieldID) {
+ return functions->GetStaticCharField(this,clazz,fieldID);
+ }
+ jshort GetStaticShortField(jclass clazz, jfieldID fieldID) {
+ return functions->GetStaticShortField(this,clazz,fieldID);
+ }
+ jint GetStaticIntField(jclass clazz, jfieldID fieldID) {
+ return functions->GetStaticIntField(this,clazz,fieldID);
+ }
+ jlong GetStaticLongField(jclass clazz, jfieldID fieldID) {
+ return functions->GetStaticLongField(this,clazz,fieldID);
+ }
+ jfloat GetStaticFloatField(jclass clazz, jfieldID fieldID) {
+ return functions->GetStaticFloatField(this,clazz,fieldID);
+ }
+ jdouble GetStaticDoubleField(jclass clazz, jfieldID fieldID) {
+ return functions->GetStaticDoubleField(this,clazz,fieldID);
+ }
+
+ void SetStaticObjectField(jclass clazz, jfieldID fieldID,
+ jobject value) {
+ functions->SetStaticObjectField(this,clazz,fieldID,value);
+ }
+ void SetStaticBooleanField(jclass clazz, jfieldID fieldID,
+ jboolean value) {
+ functions->SetStaticBooleanField(this,clazz,fieldID,value);
+ }
+ void SetStaticByteField(jclass clazz, jfieldID fieldID,
+ jbyte value) {
+ functions->SetStaticByteField(this,clazz,fieldID,value);
+ }
+ void SetStaticCharField(jclass clazz, jfieldID fieldID,
+ jchar value) {
+ functions->SetStaticCharField(this,clazz,fieldID,value);
+ }
+ void SetStaticShortField(jclass clazz, jfieldID fieldID,
+ jshort value) {
+ functions->SetStaticShortField(this,clazz,fieldID,value);
+ }
+ void SetStaticIntField(jclass clazz, jfieldID fieldID,
+ jint value) {
+ functions->SetStaticIntField(this,clazz,fieldID,value);
+ }
+ void SetStaticLongField(jclass clazz, jfieldID fieldID,
+ jlong value) {
+ functions->SetStaticLongField(this,clazz,fieldID,value);
+ }
+ void SetStaticFloatField(jclass clazz, jfieldID fieldID,
+ jfloat value) {
+ functions->SetStaticFloatField(this,clazz,fieldID,value);
+ }
+ void SetStaticDoubleField(jclass clazz, jfieldID fieldID,
+ jdouble value) {
+ functions->SetStaticDoubleField(this,clazz,fieldID,value);
+ }
+
+ jstring NewString(const jchar *unicode, jsize len) {
+ return functions->NewString(this,unicode,len);
+ }
+ jsize GetStringLength(jstring str) {
+ return functions->GetStringLength(this,str);
+ }
+ const jchar *GetStringChars(jstring str, jboolean *isCopy) {
+ return functions->GetStringChars(this,str,isCopy);
+ }
+ void ReleaseStringChars(jstring str, const jchar *chars) {
+ functions->ReleaseStringChars(this,str,chars);
+ }
+
+ jstring NewStringUTF(const char *utf) {
+ return functions->NewStringUTF(this,utf);
+ }
+ jsize GetStringUTFLength(jstring str) {
+ return functions->GetStringUTFLength(this,str);
+ }
+ const char* GetStringUTFChars(jstring str, jboolean *isCopy) {
+ return functions->GetStringUTFChars(this,str,isCopy);
+ }
+ void ReleaseStringUTFChars(jstring str, const char* chars) {
+ functions->ReleaseStringUTFChars(this,str,chars);
+ }
+
+ jsize GetArrayLength(jarray array) {
+ return functions->GetArrayLength(this,array);
+ }
+
+ jobjectArray NewObjectArray(jsize len, jclass clazz,
+ jobject init) {
+ return functions->NewObjectArray(this,len,clazz,init);
+ }
+ jobject GetObjectArrayElement(jobjectArray array, jsize index) {
+ return functions->GetObjectArrayElement(this,array,index);
+ }
+ void SetObjectArrayElement(jobjectArray array, jsize index,
+ jobject val) {
+ functions->SetObjectArrayElement(this,array,index,val);
+ }
+
+ jbooleanArray NewBooleanArray(jsize len) {
+ return functions->NewBooleanArray(this,len);
+ }
+ jbyteArray NewByteArray(jsize len) {
+ return functions->NewByteArray(this,len);
+ }
+ jcharArray NewCharArray(jsize len) {
+ return functions->NewCharArray(this,len);
+ }
+ jshortArray NewShortArray(jsize len) {
+ return functions->NewShortArray(this,len);
+ }
+ jintArray NewIntArray(jsize len) {
+ return functions->NewIntArray(this,len);
+ }
+ jlongArray NewLongArray(jsize len) {
+ return functions->NewLongArray(this,len);
+ }
+ jfloatArray NewFloatArray(jsize len) {
+ return functions->NewFloatArray(this,len);
+ }
+ jdoubleArray NewDoubleArray(jsize len) {
+ return functions->NewDoubleArray(this,len);
+ }
+
+ jboolean * GetBooleanArrayElements(jbooleanArray array, jboolean *isCopy) {
+ return functions->GetBooleanArrayElements(this,array,isCopy);
+ }
+ jbyte * GetByteArrayElements(jbyteArray array, jboolean *isCopy) {
+ return functions->GetByteArrayElements(this,array,isCopy);
+ }
+ jchar * GetCharArrayElements(jcharArray array, jboolean *isCopy) {
+ return functions->GetCharArrayElements(this,array,isCopy);
+ }
+ jshort * GetShortArrayElements(jshortArray array, jboolean *isCopy) {
+ return functions->GetShortArrayElements(this,array,isCopy);
+ }
+ jint * GetIntArrayElements(jintArray array, jboolean *isCopy) {
+ return functions->GetIntArrayElements(this,array,isCopy);
+ }
+ jlong * GetLongArrayElements(jlongArray array, jboolean *isCopy) {
+ return functions->GetLongArrayElements(this,array,isCopy);
+ }
+ jfloat * GetFloatArrayElements(jfloatArray array, jboolean *isCopy) {
+ return functions->GetFloatArrayElements(this,array,isCopy);
+ }
+ jdouble * GetDoubleArrayElements(jdoubleArray array, jboolean *isCopy) {
+ return functions->GetDoubleArrayElements(this,array,isCopy);
+ }
+
+ void ReleaseBooleanArrayElements(jbooleanArray array,
+ jboolean *elems,
+ jint mode) {
+ functions->ReleaseBooleanArrayElements(this,array,elems,mode);
+ }
+ void ReleaseByteArrayElements(jbyteArray array,
+ jbyte *elems,
+ jint mode) {
+ functions->ReleaseByteArrayElements(this,array,elems,mode);
+ }
+ void ReleaseCharArrayElements(jcharArray array,
+ jchar *elems,
+ jint mode) {
+ functions->ReleaseCharArrayElements(this,array,elems,mode);
+ }
+ void ReleaseShortArrayElements(jshortArray array,
+ jshort *elems,
+ jint mode) {
+ functions->ReleaseShortArrayElements(this,array,elems,mode);
+ }
+ void ReleaseIntArrayElements(jintArray array,
+ jint *elems,
+ jint mode) {
+ functions->ReleaseIntArrayElements(this,array,elems,mode);
+ }
+ void ReleaseLongArrayElements(jlongArray array,
+ jlong *elems,
+ jint mode) {
+ functions->ReleaseLongArrayElements(this,array,elems,mode);
+ }
+ void ReleaseFloatArrayElements(jfloatArray array,
+ jfloat *elems,
+ jint mode) {
+ functions->ReleaseFloatArrayElements(this,array,elems,mode);
+ }
+ void ReleaseDoubleArrayElements(jdoubleArray array,
+ jdouble *elems,
+ jint mode) {
+ functions->ReleaseDoubleArrayElements(this,array,elems,mode);
+ }
+
+ void GetBooleanArrayRegion(jbooleanArray array,
+ jsize start, jsize len, jboolean *buf) {
+ functions->GetBooleanArrayRegion(this,array,start,len,buf);
+ }
+ void GetByteArrayRegion(jbyteArray array,
+ jsize start, jsize len, jbyte *buf) {
+ functions->GetByteArrayRegion(this,array,start,len,buf);
+ }
+ void GetCharArrayRegion(jcharArray array,
+ jsize start, jsize len, jchar *buf) {
+ functions->GetCharArrayRegion(this,array,start,len,buf);
+ }
+ void GetShortArrayRegion(jshortArray array,
+ jsize start, jsize len, jshort *buf) {
+ functions->GetShortArrayRegion(this,array,start,len,buf);
+ }
+ void GetIntArrayRegion(jintArray array,
+ jsize start, jsize len, jint *buf) {
+ functions->GetIntArrayRegion(this,array,start,len,buf);
+ }
+ void GetLongArrayRegion(jlongArray array,
+ jsize start, jsize len, jlong *buf) {
+ functions->GetLongArrayRegion(this,array,start,len,buf);
+ }
+ void GetFloatArrayRegion(jfloatArray array,
+ jsize start, jsize len, jfloat *buf) {
+ functions->GetFloatArrayRegion(this,array,start,len,buf);
+ }
+ void GetDoubleArrayRegion(jdoubleArray array,
+ jsize start, jsize len, jdouble *buf) {
+ functions->GetDoubleArrayRegion(this,array,start,len,buf);
+ }
+
+ void SetBooleanArrayRegion(jbooleanArray array, jsize start, jsize len,
+ const jboolean *buf) {
+ functions->SetBooleanArrayRegion(this,array,start,len,buf);
+ }
+ void SetByteArrayRegion(jbyteArray array, jsize start, jsize len,
+ const jbyte *buf) {
+ functions->SetByteArrayRegion(this,array,start,len,buf);
+ }
+ void SetCharArrayRegion(jcharArray array, jsize start, jsize len,
+ const jchar *buf) {
+ functions->SetCharArrayRegion(this,array,start,len,buf);
+ }
+ void SetShortArrayRegion(jshortArray array, jsize start, jsize len,
+ const jshort *buf) {
+ functions->SetShortArrayRegion(this,array,start,len,buf);
+ }
+ void SetIntArrayRegion(jintArray array, jsize start, jsize len,
+ const jint *buf) {
+ functions->SetIntArrayRegion(this,array,start,len,buf);
+ }
+ void SetLongArrayRegion(jlongArray array, jsize start, jsize len,
+ const jlong *buf) {
+ functions->SetLongArrayRegion(this,array,start,len,buf);
+ }
+ void SetFloatArrayRegion(jfloatArray array, jsize start, jsize len,
+ const jfloat *buf) {
+ functions->SetFloatArrayRegion(this,array,start,len,buf);
+ }
+ void SetDoubleArrayRegion(jdoubleArray array, jsize start, jsize len,
+ const jdouble *buf) {
+ functions->SetDoubleArrayRegion(this,array,start,len,buf);
+ }
+
+ jint RegisterNatives(jclass clazz, const JNINativeMethod *methods,
+ jint nMethods) {
+ return functions->RegisterNatives(this,clazz,methods,nMethods);
+ }
+ jint UnregisterNatives(jclass clazz) {
+ return functions->UnregisterNatives(this,clazz);
+ }
+
+ jint MonitorEnter(jobject obj) {
+ return functions->MonitorEnter(this,obj);
+ }
+ jint MonitorExit(jobject obj) {
+ return functions->MonitorExit(this,obj);
+ }
+
+ jint GetJavaVM(JavaVM **vm) {
+ return functions->GetJavaVM(this,vm);
+ }
+
+ void GetStringRegion(jstring str, jsize start, jsize len, jchar *buf) {
+ functions->GetStringRegion(this,str,start,len,buf);
+ }
+ void GetStringUTFRegion(jstring str, jsize start, jsize len, char *buf) {
+ functions->GetStringUTFRegion(this,str,start,len,buf);
+ }
+
+ void * GetPrimitiveArrayCritical(jarray array, jboolean *isCopy) {
+ return functions->GetPrimitiveArrayCritical(this,array,isCopy);
+ }
+ void ReleasePrimitiveArrayCritical(jarray array, void *carray, jint mode) {
+ functions->ReleasePrimitiveArrayCritical(this,array,carray,mode);
+ }
+
+ const jchar * GetStringCritical(jstring string, jboolean *isCopy) {
+ return functions->GetStringCritical(this,string,isCopy);
+ }
+ void ReleaseStringCritical(jstring string, const jchar *cstring) {
+ functions->ReleaseStringCritical(this,string,cstring);
+ }
+
+ jweak NewWeakGlobalRef(jobject obj) {
+ return functions->NewWeakGlobalRef(this,obj);
+ }
+ void DeleteWeakGlobalRef(jweak ref) {
+ functions->DeleteWeakGlobalRef(this,ref);
+ }
+
+ jboolean ExceptionCheck() {
+ return functions->ExceptionCheck(this);
+ }
+
+ jobject NewDirectByteBuffer(void* address, jlong capacity) {
+ return functions->NewDirectByteBuffer(this, address, capacity);
+ }
+ void* GetDirectBufferAddress(jobject buf) {
+ return functions->GetDirectBufferAddress(this, buf);
+ }
+ jlong GetDirectBufferCapacity(jobject buf) {
+ return functions->GetDirectBufferCapacity(this, buf);
+ }
+ jobjectRefType GetObjectRefType(jobject obj) {
+ return functions->GetObjectRefType(this, obj);
+ }
+
+#endif /* __cplusplus */
+};
+
+typedef struct JavaVMOption {
+ char *optionString;
+ void *extraInfo;
+} JavaVMOption;
+
+typedef struct JavaVMInitArgs {
+ jint version;
+
+ jint nOptions;
+ JavaVMOption *options;
+ jboolean ignoreUnrecognized;
+} JavaVMInitArgs;
+
+typedef struct JavaVMAttachArgs {
+ jint version;
+
+ char *name;
+ jobject group;
+} JavaVMAttachArgs;
+
+#define JDK1_2
+#define JDK1_4
+#define JDK1_8
+
+struct JNIInvokeInterface_ {
+ void *reserved0;
+ void *reserved1;
+ void *reserved2;
+
+ jint (JNICALL *DestroyJavaVM)(JavaVM *vm);
+
+ jint (JNICALL *AttachCurrentThread)(JavaVM *vm, void **penv, void *args);
+
+ jint (JNICALL *DetachCurrentThread)(JavaVM *vm);
+
+ jint (JNICALL *GetEnv)(JavaVM *vm, void **penv, jint version);
+
+ jint (JNICALL *AttachCurrentThreadAsDaemon)(JavaVM *vm, void **penv, void *args);
+};
+
+struct JavaVM_ {
+ const struct JNIInvokeInterface_ *functions;
+#ifdef __cplusplus
+
+ jint DestroyJavaVM() {
+ return functions->DestroyJavaVM(this);
+ }
+ jint AttachCurrentThread(void **penv, void *args) {
+ return functions->AttachCurrentThread(this, penv, args);
+ }
+ jint DetachCurrentThread() {
+ return functions->DetachCurrentThread(this);
+ }
+
+ jint GetEnv(void **penv, jint version) {
+ return functions->GetEnv(this, penv, version);
+ }
+ jint AttachCurrentThreadAsDaemon(void **penv, void *args) {
+ return functions->AttachCurrentThreadAsDaemon(this, penv, args);
+ }
+#endif
+};
+
+#ifdef _JNI_IMPLEMENTATION_
+#define _JNI_IMPORT_OR_EXPORT_ JNIEXPORT
+#else
+#define _JNI_IMPORT_OR_EXPORT_ JNIIMPORT
+#endif
+_JNI_IMPORT_OR_EXPORT_ jint JNICALL
+JNI_GetDefaultJavaVMInitArgs(void *args);
+
+_JNI_IMPORT_OR_EXPORT_ jint JNICALL
+JNI_CreateJavaVM(JavaVM **pvm, void **penv, void *args);
+
+_JNI_IMPORT_OR_EXPORT_ jint JNICALL
+JNI_GetCreatedJavaVMs(JavaVM **, jsize, jsize *);
+
+JNIEXPORT jint JNICALL
+JNI_OnLoad(JavaVM *vm, void *reserved);
+
+JNIEXPORT void JNICALL
+JNI_OnUnload(JavaVM *vm, void *reserved);
+
+#define JNI_VERSION_1_1 0x00010001
+#define JNI_VERSION_1_2 0x00010002
+#define JNI_VERSION_1_4 0x00010004
+#define JNI_VERSION_1_6 0x00010006
+#define JNI_VERSION_1_8 0x00010008
+
+#endif /* __GLUEGEN__ */
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* __cplusplus */
+
+#endif /* !_JAVASOFT_JNI_H_ */
+
diff --git a/make/stub_includes/jni/macosx/jawt_md.h b/make/stub_includes/jni/macosx/jawt_md.h
index 3b019dd..5a73e44 100644
--- a/make/stub_includes/jni/macosx/jawt_md.h
+++ b/make/stub_includes/jni/macosx/jawt_md.h
@@ -1,9 +1,4 @@
/**
- * Temporary workaround!
- *
- * Provided darwin/jawt_md.h from Oracle for OSX / Java7
- * has X11 dependencies and does not define JAWT_SurfaceLayers.
- *
* This C header file is derived from Apple's Java SDK provided C header file
* with the following copyright notice:
*
diff --git a/make/stub_includes/jni/macosx/jni_md.h b/make/stub_includes/jni/macosx/jni_md.h
index 7f52704..f64bda4 100644
--- a/make/stub_includes/jni/macosx/jni_md.h
+++ b/make/stub_includes/jni/macosx/jni_md.h
@@ -1,9 +1,4 @@
/*
- * Temporary workaround!
- *
- * Provided darwin/jawt_md.h from Oracle for OSX / Java7
- * has X11 dependencies and does not define JAWT_SurfaceLayers.
- *
* @(#)jni_md.h 1.18 03/12/19
*
* This C header file is derived from Sun Microsystem's Java SDK provided C header file
@@ -32,16 +27,20 @@
#ifndef _JAVASOFT_JNI_MD_H_
#define _JAVASOFT_JNI_MD_H_
-#define JNIEXPORT __attribute__((visibility("default")))
-#define JNIIMPORT
-#define JNICALL
+#include <gluegen_stdint.h>
+
+#ifdef __GLUEGEN__
+ #define JNIEXPORT
+ #define JNIIMPORT
+ #define JNICALL
+#else /* __GLUEGEN__ */
+ #define JNIEXPORT __attribute__((visibility("default")))
+ #define JNIIMPORT __attribute__((visibility("default")))
+ #define JNICALL
+#endif /* __GLUEGEN__ */
-#if __LP64__
-typedef int jint;
-#else
-typedef long jint;
-#endif
-typedef long long jlong;
-typedef signed char jbyte;
+typedef int8_t jbyte;
+typedef int32_t jint;
+typedef int64_t jlong;
#endif /* !_JAVASOFT_JNI_MD_H_ */
diff --git a/make/stub_includes/jni/win32/jawt_md.h b/make/stub_includes/jni/win32/jawt_md.h
new file mode 100644
index 0000000..23be13c
--- /dev/null
+++ b/make/stub_includes/jni/win32/jawt_md.h
@@ -0,0 +1,54 @@
+/*
+ * @(#)jawt_md.h 1.8 05/11/17
+ *
+ * This C header file is derived from Sun Microsystem's Java SDK provided C header file
+ * with the following copyright notice:
+ *
+ * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ *
+ * This version has complex comments removed and does not contain inlined algorithms etc, if any existed.
+ *
+ * The original C header file was included to JOGL on Sat Jun 21 02:10:30 2008
+ * (commit cbc45e816f4ee81031bffce19a99550681462a24) by Sun Microsystem's staff and were approved.
+ *
+ * This C header file is included due to ensure compatibility with - and invocation of the JAWT protocol.
+ * They are processed by GlueGen to create a Java binding for JAWT invocation only.
+ *
+ * http://ftp.resource.org/courts.gov/c/F3/387/387.F3d.522.03-5400.html (36)
+ * "Atari Games Corp. v. Nintendo of Am., Inc., Nos. 88-4805 & 89-0027, 1993 WL 207548, at *1 (N.D.Cal. May 18, 1993) ("Atari III")
+ * ("Program code that is strictly necessary to achieve current compatibility presents a merger problem, almost by definition,
+ * and is thus excluded from the scope of any copyright.")."
+ *
+ * http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2009:111:0016:0022:EN:PDF
+ * L 111/17 (10) and (15)
+ */
+
+#ifndef _JAVASOFT_JAWT_MD_H_
+#define _JAVASOFT_JAWT_MD_H_
+
+#include <windows.h>
+#include "jawt.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct jawt_Win32DrawingSurfaceInfo {
+ /**
+ union {
+ HWND hwnd;
+ HBITMAP hbitmap;
+ void* pbits;
+ }; */
+ HWND handle;
+
+ HDC hdc;
+ HPALETTE hpalette;
+} JAWT_Win32DrawingSurfaceInfo;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* !_JAVASOFT_JAWT_MD_H_ */
diff --git a/make/stub_includes/jni/win32/jni_md.h b/make/stub_includes/jni/win32/jni_md.h
new file mode 100644
index 0000000..34282c8
--- /dev/null
+++ b/make/stub_includes/jni/win32/jni_md.h
@@ -0,0 +1,46 @@
+/*
+ * @(#)jni_md.h 1.15 05/11/17
+ *
+ * This C header file is derived from Sun Microsystem's Java SDK provided C header file
+ * with the following copyright notice:
+ *
+ * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ *
+ * This version has complex comments removed and does not contain inlined algorithms etc, if any existed.
+ *
+ * The original C header file was included to JOGL on Sat Jun 21 02:10:30 2008
+ * (commit cbc45e816f4ee81031bffce19a99550681462a24) by Sun Microsystem's staff and were approved.
+ *
+ * This C header file is included due to ensure compatibility with - and invocation of the JAWT protocol.
+ * They are processed by GlueGen to create a Java binding for JAWT invocation only.
+ *
+ * http://ftp.resource.org/courts.gov/c/F3/387/387.F3d.522.03-5400.html (36)
+ * "Atari Games Corp. v. Nintendo of Am., Inc., Nos. 88-4805 & 89-0027, 1993 WL 207548, at *1 (N.D.Cal. May 18, 1993) ("Atari III")
+ * ("Program code that is strictly necessary to achieve current compatibility presents a merger problem, almost by definition,
+ * and is thus excluded from the scope of any copyright.")."
+ *
+ * http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2009:111:0016:0022:EN:PDF
+ * L 111/17 (10) and (15)
+ */
+
+#ifndef _JAVASOFT_JNI_MD_H_
+#define _JAVASOFT_JNI_MD_H_
+
+#include <gluegen_stdint.h>
+
+#ifdef __GLUEGEN__
+ #define JNIEXPORT
+ #define JNIIMPORT
+ #define JNICALL
+#else /* __GLUEGEN__ */
+ #define JNIEXPORT __declspec(dllexport)
+ #define JNIIMPORT __declspec(dllimport)
+ #define JNICALL __stdcall
+#endif /* __GLUEGEN__ */
+
+typedef int8_t jbyte;
+typedef int32_t jint;
+typedef int64_t jlong;
+
+#endif /* !_JAVASOFT_JNI_MD_H_ */
diff --git a/make/stub_includes/jni/x11/jawt_md.h b/make/stub_includes/jni/x11/jawt_md.h
new file mode 100644
index 0000000..0879de8
--- /dev/null
+++ b/make/stub_includes/jni/x11/jawt_md.h
@@ -0,0 +1,56 @@
+/*
+ * @(#)jawt_md.h 1.12 05/11/17
+ *
+ * This C header file is derived from Sun Microsystem's Java SDK provided C header file
+ * with the following copyright notice:
+ *
+ * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ *
+ * This version has complex comments removed and does not contain inlined algorithms etc, if any existed.
+ *
+ * The original C header file was included to JOGL on Sat Jun 21 02:10:30 2008
+ * (commit cbc45e816f4ee81031bffce19a99550681462a24) by Sun Microsystem's staff and were approved.
+ *
+ * This C header file is included due to ensure compatibility with - and invocation of the JAWT protocol.
+ * They are processed by GlueGen to create a Java binding for JAWT invocation only.
+ *
+ * http://ftp.resource.org/courts.gov/c/F3/387/387.F3d.522.03-5400.html (36)
+ * "Atari Games Corp. v. Nintendo of Am., Inc., Nos. 88-4805 & 89-0027, 1993 WL 207548, at *1 (N.D.Cal. May 18, 1993) ("Atari III")
+ * ("Program code that is strictly necessary to achieve current compatibility presents a merger problem, almost by definition,
+ * and is thus excluded from the scope of any copyright.")."
+ *
+ * http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2009:111:0016:0022:EN:PDF
+ * L 111/17 (10) and (15)
+ */
+
+#ifndef _JAVASOFT_JAWT_MD_H_
+#define _JAVASOFT_JAWT_MD_H_
+
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+#include <X11/Intrinsic.h>
+#include "jawt.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct jawt_X11DrawingSurfaceInfo {
+ Drawable drawable;
+ Display* display;
+ VisualID visualID;
+ Colormap colormapID;
+ int depth;
+ /*
+ * Since 1.4
+ */
+ int (JNICALL *GetAWTColor)(JAWT_DrawingSurface* ds,
+ int r, int g, int b);
+} JAWT_X11DrawingSurfaceInfo;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* !_JAVASOFT_JAWT_MD_H_ */
diff --git a/make/stub_includes/jni/x11/jni_md.h b/make/stub_includes/jni/x11/jni_md.h
new file mode 100644
index 0000000..39d3abf
--- /dev/null
+++ b/make/stub_includes/jni/x11/jni_md.h
@@ -0,0 +1,40 @@
+/*
+ * @(#)jni_md.h 1.19 05/11/17
+ *
+ * This C header file is derived from Sun Microsystem's Java SDK provided C header file
+ * with the following copyright notice:
+ *
+ * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ *
+ * This version has complex comments removed and does not contain inlined algorithms etc, if any existed.
+ *
+ * The original C header file was included to JOGL on Sat Jun 21 02:10:30 2008
+ * (commit cbc45e816f4ee81031bffce19a99550681462a24) by Sun Microsystem's staff and were approved.
+ *
+ * This C header file is included due to ensure compatibility with - and invocation of the JAWT protocol.
+ * They are processed by GlueGen to create a Java binding for JAWT invocation only.
+ *
+ * http://ftp.resource.org/courts.gov/c/F3/387/387.F3d.522.03-5400.html (36)
+ * "Atari Games Corp. v. Nintendo of Am., Inc., Nos. 88-4805 & 89-0027, 1993 WL 207548, at *1 (N.D.Cal. May 18, 1993) ("Atari III")
+ * ("Program code that is strictly necessary to achieve current compatibility presents a merger problem, almost by definition,
+ * and is thus excluded from the scope of any copyright.")."
+ *
+ * http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2009:111:0016:0022:EN:PDF
+ * L 111/17 (10) and (15)
+ */
+
+#ifndef _JAVASOFT_JNI_MD_H_
+#define _JAVASOFT_JNI_MD_H_
+
+#include <gluegen_stdint.h>
+
+#define JNIEXPORT
+#define JNIIMPORT
+#define JNICALL
+
+typedef int8_t jbyte;
+typedef int32_t jint;
+typedef int64_t jlong;
+
+#endif /* !_JAVASOFT_JNI_MD_H_ */
diff --git a/make/stub_includes/os/elf_header.h b/make/stub_includes/os/elf_header.h
index 7d608f0..b303029 100644
--- a/make/stub_includes/os/elf_header.h
+++ b/make/stub_includes/os/elf_header.h
@@ -15,6 +15,9 @@ typedef struct {
uint16_t e_type;
uint16_t e_machine;
uint32_t e_version;
+} Ehdr_p1;
+
+typedef struct {
ElfN_Addr e_entry;
ElfN_Off e_phoff;
ElfN_Off e_shoff;
@@ -25,7 +28,7 @@ typedef struct {
uint16_t e_shentsize;
uint16_t e_shnum;
uint16_t e_shstrndx;
-} Ehdr;
+} Ehdr_p2;
typedef struct {
uint32_t sh_name;
diff --git a/make/stub_includes/platform/glibc-compat-symbols.h b/make/stub_includes/platform/glibc-compat-symbols.h
index 3599b82..fc19543 100644
--- a/make/stub_includes/platform/glibc-compat-symbols.h
+++ b/make/stub_includes/platform/glibc-compat-symbols.h
@@ -17,16 +17,40 @@
*/
#if defined(__linux__) /* Actually we like to test whether we link against GLIBC .. */
#if defined(__GNUC__)
- #if defined(__arm__)
+ #if defined(__aarch64__)
+ /* glibc 2.17 is the first glibc version that support aarch64
+ however memcpy is not versioned for aarch64 */
+ #define GLIBC_COMPAT_SYMBOL(FFF)
+ #elif defined(__arm__)
+ /** On recent toolchain memcpy is no more versioned for arm
#define GLIBC_COMPAT_SYMBOL(FFF) __asm__(".symver " #FFF "," #FFF "@GLIBC_2.4");
+ */
+ #define GLIBC_COMPAT_SYMBOL(FFF)
+ #elif defined(__PPC64__)
+ /* PPC64 has multiple versions of memcpy from glibc 2.3 and onwards
+ * while PPC64LE only has one (introduced in glibc 2.17). PPC64LE is
+ * the more common of the two now so skip versioning. */
+ #define GLIBC_COMPAT_SYMBOL(FFF)
#elif defined(__amd64__)
#define GLIBC_COMPAT_SYMBOL(FFF) __asm__(".symver " #FFF "," #FFF "@GLIBC_2.2.5");
#else
#define GLIBC_COMPAT_SYMBOL(FFF) __asm__(".symver " #FFF "," #FFF "@GLIBC_2.0");
#endif /*__amd64__*/
#elif defined(__clang__)
- #if defined(__arm__)
- #define GLIBC_COMPAT_SYMBOL(FFF) asm(".symver " #FFF "," #FFF "@GLIBC_2.4");
+ #if defined(__aarch64__)
+ /* glibc 2.17 is the first glibc version that support aarch64
+ however memcpy is not versioned for aarch64 */
+ #define GLIBC_COMPAT_SYMBOL(FFF)
+ #elif defined(__arm__)
+ /** On recent toolchain memcpy is no more versioned for arm
+ #define GLIBC_COMPAT_SYMBOL(FFF) __asm__(".symver " #FFF "," #FFF "@GLIBC_2.4");
+ */
+ #define GLIBC_COMPAT_SYMBOL(FFF)
+ #elif defined(__PPC64__)
+ /* PPC64 has multiple versions of memcpy from glibc 2.3 and onwards
+ * while PPC64LE only has one (introduced in glibc 2.17). PPC64LE is
+ * the more common of the two now so skip versioning. */
+ #define GLIBC_COMPAT_SYMBOL(FFF)
#elif defined(__amd64__)
#define GLIBC_COMPAT_SYMBOL(FFF) asm(".symver " #FFF "," #FFF "@GLIBC_2.2.5");
#else
diff --git a/make/stub_includes/platform/gluegen_stddef.h b/make/stub_includes/platform/gluegen_stddef.h
index 6272bd1..1500684 100644
--- a/make/stub_includes/platform/gluegen_stddef.h
+++ b/make/stub_includes/platform/gluegen_stddef.h
@@ -15,7 +15,7 @@
#elif defined(_WIN32)
typedef __int32 ptrdiff_t;
typedef unsigned __int32 size_t;
-#elif defined(__ia64__) || defined(__x86_64__)
+#elif defined(__LP64__) || defined(__ia64__) || defined(__x86_64__) || defined(__aarch64__)
typedef long ptrdiff_t;
typedef unsigned long size_t;
#else
diff --git a/make/stub_includes/platform/gluegen_stdint.h b/make/stub_includes/platform/gluegen_stdint.h
index 8b1dbe3..b277817 100644
--- a/make/stub_includes/platform/gluegen_stdint.h
+++ b/make/stub_includes/platform/gluegen_stdint.h
@@ -33,7 +33,7 @@
typedef __int32 intptr_t;
typedef unsigned __int32 uintptr_t;
-#elif defined(__ia64__) || defined(__x86_64__)
+#elif defined(__LP64__) || defined(__ia64__) || defined(__x86_64__) || defined(__aarch64__)
typedef signed char int8_t;
typedef unsigned char uint8_t;
typedef signed short int16_t;