• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
Aucun tag

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

Commit MetaInfo

Révision12f817197d983f864acb946fec650af29532a289 (tree)
l'heure2023-11-15 06:05:11
AuteurHotshot5000 <sebastian_bugiu@yaho...>
CommiterHotshot5000

Message de Log

Updated gradle. Trying to get jnigen to generate the correct xrOS native binaries

Change Summary

Modification

--- a/backends/build.gradle
+++ b/backends/build.gradle
@@ -17,13 +17,13 @@
1717 subprojects {
1818 apply plugin: "java"
1919
20- sourceCompatibility = 1.7
21- targetCompatibility = 1.7
20+ sourceCompatibility = 1.8
21+ targetCompatibility = 1.8
2222 sourceSets.main.java.srcDirs = ["src"]
2323 sourceSets.main.resources.srcDirs = ["res"]
2424
2525
2626 dependencies {
27- compile project(":gdx")
27+ api project(":gdx")
2828 }
2929 }
--- a/backends/gdx-backend-lwjgl/build.gradle
+++ b/backends/gdx-backend-lwjgl/build.gradle
@@ -15,7 +15,7 @@
1515 ******************************************************************************/
1616
1717 dependencies {
18- compile libraries.lwjgl
18+ api libraries.lwjgl
1919 }
2020
2121
--- a/backends/gdx-backend-lwjgl3/build.gradle
+++ b/backends/gdx-backend-lwjgl3/build.gradle
@@ -18,7 +18,7 @@ sourceCompatibility = 1.8
1818 targetCompatibility = 1.8
1919
2020 dependencies {
21- compile libraries.lwjgl3
21+ api libraries.lwjgl3
2222 }
2323
2424
--- a/backends/gdx-backend-robovm/build.gradle
+++ b/backends/gdx-backend-robovm/build.gradle
@@ -15,5 +15,5 @@
1515 ******************************************************************************/
1616
1717 dependencies {
18- compile libraries.robovm
18+ api libraries.robovm
1919 }
--- a/backends/gdx-backends-gwt/build.gradle
+++ b/backends/gdx-backends-gwt/build.gradle
@@ -15,7 +15,7 @@
1515 ******************************************************************************/
1616
1717 dependencies {
18- compile libraries.gwt
18+ api libraries.gwt
1919 }
2020
2121 configurations.all {
--- a/build.gradle
+++ b/build.gradle
@@ -21,10 +21,21 @@ buildscript {
2121
2222 repositories {
2323 maven { url "https://plugins.gradle.org/m2/" }
24+ flatDir {
25+ dirs '/Users/sebastian/Downloads/gdx-jnigen/gdx-jnigen-loader/build/libs/', '/Users/sebastian/Downloads/gdx-jnigen/gdx-jnigen/build/libs/', '/Users/sebastian/Downloads/gdx-jnigen/gdx-jnigen-gradle/build/libs/', '/Users/sebastian/Downloads/gdx-jnigen/out/artifacts/gdx_jnigen_jar/'
26+ }
27+ google()
28+ gradlePluginPortal()
2429 }
2530 dependencies {
2631 classpath "com.diffplug.spotless:spotless-plugin-gradle:${versions.spotless}"
27- classpath "com.badlogicgames.gdx:gdx-jnigen-gradle:2.2.0"
32+ classpath ":gdx-jnigen-loader:2.4.2-SNAPSHOT"
33+ classpath ":gdx-jnigen-gradle:2.4.2-SNAPSHOT"
34+ classpath ":gdx-jnigen:2.4.2-SNAPSHOT"
35+// classpath files('/Users/sebastian/Downloads/gdx-jnigen/out/artifacts/gdx_jnigen_jar/gdx-jnigen.jar')
36+ classpath files('/Users/sebastian/Downloads/gdx-jnigen/gdx-jnigen/build/libs/gdx-jnigen-2.4.2-SNAPSHOT-all.jar')
37+ classpath files('/Users/sebastian/Downloads/gdx-jnigen/gdx-jnigen-gradle/build/libs/gdx-jnigen-2.4.2-SNAPSHOT-all.jar')
38+ classpath files('/Users/sebastian/Downloads/gdx-jnigen/gdx-jnigen-loader/build/libs/gdx-jnigen-loader-2.4.2-SNAPSHOT-all.jar')
2839 }
2940 }
3041
@@ -55,7 +66,7 @@ allprojects {
5566
5667 configure(subprojects - project(":tests:gdx-tests-android")) {
5768 apply plugin: "idea"
58- apply plugin: "java"
69+ apply plugin: "java-library"
5970 apply plugin: "com.diffplug.spotless"
6071
6172 compileJava {
--- a/extensions/build.gradle
+++ b/extensions/build.gradle
@@ -17,8 +17,8 @@
1717 subprojects {
1818 apply plugin: "java"
1919
20- sourceCompatibility = 1.7
21- targetCompatibility = 1.7
20+ sourceCompatibility = 1.8
21+ targetCompatibility = 1.8
2222
2323 compileJava.options.encoding = 'UTF-8'
2424
--- a/extensions/gdx-box2d/build.gradle
+++ b/extensions/gdx-box2d/build.gradle
@@ -18,6 +18,6 @@ group = "box2d-parent"
1818
1919 subprojects {
2020 dependencies {
21- compile project(":gdx")
21+ api project(":gdx")
2222 }
2323 }
--- /dev/null
+++ b/extensions/gdx-box2d/gdx-box2d/jni/Info.plist
@@ -0,0 +1,51 @@
1+<?xml version="1.0" encoding="UTF-8"?>
2+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+<plist version="1.0">
4+<dict>
5+ <key>BuildMachineOSBuild</key>
6+ <string>19H1922</string>
7+ <key>CFBundleDevelopmentRegion</key>
8+ <string>en</string>
9+ <key>CFBundleExecutable</key>
10+ <string>%libName%</string>
11+ <key>CFBundleIdentifier</key>
12+ <string>%identifier%</string>
13+ <key>CFBundleInfoDictionaryVersion</key>
14+ <string>6.0</string>
15+ <key>CFBundleName</key>
16+ <string>%libName%</string>
17+ <key>CFBundlePackageType</key>
18+ <string>FMWK</string>
19+ <key>CFBundleShortVersionString</key>
20+ <string>1.0</string>
21+ <key>CFBundleSupportedPlatforms</key>
22+ <array>
23+ <string>iPhoneOS</string>
24+ </array>
25+ <key>CFBundleVersion</key>
26+ <string>1</string>
27+ <key>DTCompiler</key>
28+ <string>com.apple.compilers.llvm.clang.1_0</string>
29+ <key>DTPlatformBuild</key>
30+ <string>18D46</string>
31+ <key>DTPlatformName</key>
32+ <string>%platform%</string>
33+ <key>DTPlatformVersion</key>
34+ <string>14.4</string>
35+ <key>DTSDKBuild</key>
36+ <string>18D46</string>
37+ <key>DTSDKName</key>
38+ <string>iphoneos14.4</string>
39+ <key>DTXcode</key>
40+ <string>1240</string>
41+ <key>DTXcodeBuild</key>
42+ <string>12D4e</string>
43+ <key>MinimumOSVersion</key>
44+ <string>%minIOSVersion%</string>
45+ <key>UIDeviceFamily</key>
46+ <array>
47+ <integer>1</integer>
48+ <integer>2</integer>
49+ </array>
50+</dict>
51+</plist>
--- a/extensions/gdx-bullet/build.gradle
+++ b/extensions/gdx-bullet/build.gradle
@@ -25,7 +25,7 @@ sourceSets.main.java.srcDirs = [
2525 ]
2626
2727 dependencies {
28- compile project(":gdx")
28+ api project(":gdx")
2929 }
3030
3131 apply plugin: "com.badlogicgames.gdx.gdx-jnigen"
--- /dev/null
+++ b/extensions/gdx-bullet/jni/Android.mk
@@ -0,0 +1,201 @@
1+LOCAL_PATH:= $(call my-dir)
2+include $(CLEAR_VARS)
3+
4+LOCAL_MODULE := gdx-bullet
5+LOCAL_C_INCLUDES := src/bullet/ src/custom/ src/extras/Serialize/ src/extras/
6+
7+LOCAL_CFLAGS := $(LOCAL_C_INCLUDES:%=-I%) -O2 -Wall -D__ANDROID__
8+LOCAL_CPPFLAGS := $(LOCAL_C_INCLUDES:%=-I%) -O2 -Wall -D__ANDROID__ -fno-strict-aliasing -fno-rtti -DBT_NO_PROFILE -DBT_USE_INVERSE_DYNAMICS_WITH_BULLET2 -fexceptions
9+LOCAL_LDLIBS := -lm
10+LOCAL_ARM_MODE := arm
11+
12+LOCAL_SRC_FILES := memcpy_wrap.c\
13+ swig-src/dynamics/dynamics_wrap.cpp\
14+ swig-src/inversedynamics/inversedynamics_wrap.cpp\
15+ swig-src/softbody/softbody_wrap.cpp\
16+ swig-src/linearmath/linearmath_wrap.cpp\
17+ swig-src/collision/collision_wrap.cpp\
18+ swig-src/extras/extras_wrap.cpp\
19+ src/bullet/BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp\
20+ src/bullet/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp\
21+ src/bullet/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp\
22+ src/bullet/BulletSoftBody/btDefaultSoftBodySolver.cpp\
23+ src/bullet/BulletSoftBody/btSoftBody.cpp\
24+ src/bullet/BulletSoftBody/btSoftMultiBodyDynamicsWorld.cpp\
25+ src/bullet/BulletSoftBody/btSoftRigidDynamicsWorld.cpp\
26+ src/bullet/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp\
27+ src/bullet/BulletSoftBody/btSoftBodyHelpers.cpp\
28+ src/bullet/BulletInverseDynamics/details/MultiBodyTreeInitCache.cpp\
29+ src/bullet/BulletInverseDynamics/details/MultiBodyTreeImpl.cpp\
30+ src/bullet/BulletInverseDynamics/IDMath.cpp\
31+ src/bullet/BulletInverseDynamics/MultiBodyTree.cpp\
32+ src/bullet/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp\
33+ src/bullet/BulletCollision/BroadphaseCollision/btDbvt.cpp\
34+ src/bullet/BulletCollision/BroadphaseCollision/btAxisSweep3.cpp\
35+ src/bullet/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp\
36+ src/bullet/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp\
37+ src/bullet/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp\
38+ src/bullet/BulletCollision/BroadphaseCollision/btDispatcher.cpp\
39+ src/bullet/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp\
40+ src/bullet/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp\
41+ src/bullet/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp\
42+ src/bullet/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp\
43+ src/bullet/BulletCollision/NarrowPhaseCollision/btConvexCast.cpp\
44+ src/bullet/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.cpp\
45+ src/bullet/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.cpp\
46+ src/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp\
47+ src/bullet/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp\
48+ src/bullet/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp\
49+ src/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp\
50+ src/bullet/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.cpp\
51+ src/bullet/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.cpp\
52+ src/bullet/BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp\
53+ src/bullet/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp\
54+ src/bullet/BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp\
55+ src/bullet/BulletCollision/CollisionDispatch/btUnionFind.cpp\
56+ src/bullet/BulletCollision/CollisionDispatch/btCollisionWorld.cpp\
57+ src/bullet/BulletCollision/CollisionDispatch/btGhostObject.cpp\
58+ src/bullet/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp\
59+ src/bullet/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp\
60+ src/bullet/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp\
61+ src/bullet/BulletCollision/CollisionDispatch/btCollisionDispatcherMt.cpp\
62+ src/bullet/BulletCollision/CollisionDispatch/btManifoldResult.cpp\
63+ src/bullet/BulletCollision/CollisionDispatch/btCollisionWorldImporter.cpp\
64+ src/bullet/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.cpp\
65+ src/bullet/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp\
66+ src/bullet/BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp\
67+ src/bullet/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp\
68+ src/bullet/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp\
69+ src/bullet/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp\
70+ src/bullet/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp\
71+ src/bullet/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp\
72+ src/bullet/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp\
73+ src/bullet/BulletCollision/CollisionDispatch/btHashedSimplePairCache.cpp\
74+ src/bullet/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.cpp\
75+ src/bullet/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp\
76+ src/bullet/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp\
77+ src/bullet/BulletCollision/CollisionDispatch/btCompoundCompoundCollisionAlgorithm.cpp\
78+ src/bullet/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp\
79+ src/bullet/BulletCollision/CollisionDispatch/btCollisionObject.cpp\
80+ src/bullet/BulletCollision/Gimpact/gim_tri_collision.cpp\
81+ src/bullet/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp\
82+ src/bullet/BulletCollision/Gimpact/gim_contact.cpp\
83+ src/bullet/BulletCollision/Gimpact/btContactProcessing.cpp\
84+ src/bullet/BulletCollision/Gimpact/gim_box_set.cpp\
85+ src/bullet/BulletCollision/Gimpact/btTriangleShapeEx.cpp\
86+ src/bullet/BulletCollision/Gimpact/btGenericPoolAllocator.cpp\
87+ src/bullet/BulletCollision/Gimpact/btGImpactBvh.cpp\
88+ src/bullet/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp\
89+ src/bullet/BulletCollision/Gimpact/btGImpactShape.cpp\
90+ src/bullet/BulletCollision/Gimpact/gim_memory.cpp\
91+ src/bullet/BulletCollision/CollisionShapes/btMultiSphereShape.cpp\
92+ src/bullet/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp\
93+ src/bullet/BulletCollision/CollisionShapes/btConvex2dShape.cpp\
94+ src/bullet/BulletCollision/CollisionShapes/btConvexShape.cpp\
95+ src/bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp\
96+ src/bullet/BulletCollision/CollisionShapes/btTriangleCallback.cpp\
97+ src/bullet/BulletCollision/CollisionShapes/btBox2dShape.cpp\
98+ src/bullet/BulletCollision/CollisionShapes/btConeShape.cpp\
99+ src/bullet/BulletCollision/CollisionShapes/btShapeHull.cpp\
100+ src/bullet/BulletCollision/CollisionShapes/btCompoundShape.cpp\
101+ src/bullet/BulletCollision/CollisionShapes/btCylinderShape.cpp\
102+ src/bullet/BulletCollision/CollisionShapes/btCollisionShape.cpp\
103+ src/bullet/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp\
104+ src/bullet/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.cpp\
105+ src/bullet/BulletCollision/CollisionShapes/btTetrahedronShape.cpp\
106+ src/bullet/BulletCollision/CollisionShapes/btConcaveShape.cpp\
107+ src/bullet/BulletCollision/CollisionShapes/btConvexInternalShape.cpp\
108+ src/bullet/BulletCollision/CollisionShapes/btTriangleMesh.cpp\
109+ src/bullet/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp\
110+ src/bullet/BulletCollision/CollisionShapes/btMinkowskiSumShape.cpp\
111+ src/bullet/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp\
112+ src/bullet/BulletCollision/CollisionShapes/btTriangleBuffer.cpp\
113+ src/bullet/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp\
114+ src/bullet/BulletCollision/CollisionShapes/btSphereShape.cpp\
115+ src/bullet/BulletCollision/CollisionShapes/btOptimizedBvh.cpp\
116+ src/bullet/BulletCollision/CollisionShapes/btCapsuleShape.cpp\
117+ src/bullet/BulletCollision/CollisionShapes/btConvexPolyhedron.cpp\
118+ src/bullet/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp\
119+ src/bullet/BulletCollision/CollisionShapes/btUniformScalingShape.cpp\
120+ src/bullet/BulletCollision/CollisionShapes/btEmptyShape.cpp\
121+ src/bullet/BulletCollision/CollisionShapes/btConvexHullShape.cpp\
122+ src/bullet/BulletCollision/CollisionShapes/btBoxShape.cpp\
123+ src/bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.cpp\
124+ src/bullet/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.cpp\
125+ src/bullet/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp\
126+ src/bullet/BulletCollision/CollisionShapes/btConvexPointCloudShape.cpp\
127+ src/bullet/BulletDynamics/Dynamics/btSimulationIslandManagerMt.cpp\
128+ src/bullet/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp\
129+ src/bullet/BulletDynamics/Dynamics/btRigidBody.cpp\
130+ src/bullet/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp\
131+ src/bullet/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.cpp\
132+ src/bullet/BulletDynamics/Vehicle/btRaycastVehicle.cpp\
133+ src/bullet/BulletDynamics/Vehicle/btWheelInfo.cpp\
134+ src/bullet/BulletDynamics/Character/btKinematicCharacterController.cpp\
135+ src/bullet/BulletDynamics/Featherstone/btMultiBodyFixedConstraint.cpp\
136+ src/bullet/BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.cpp\
137+ src/bullet/BulletDynamics/Featherstone/btMultiBodySliderConstraint.cpp\
138+ src/bullet/BulletDynamics/Featherstone/btMultiBodyConstraintSolver.cpp\
139+ src/bullet/BulletDynamics/Featherstone/btMultiBodyPoint2Point.cpp\
140+ src/bullet/BulletDynamics/Featherstone/btMultiBodyJointMotor.cpp\
141+ src/bullet/BulletDynamics/Featherstone/btMultiBody.cpp\
142+ src/bullet/BulletDynamics/Featherstone/btMultiBodyConstraint.cpp\
143+ src/bullet/BulletDynamics/Featherstone/btMultiBodyJointLimitConstraint.cpp\
144+ src/bullet/BulletDynamics/Featherstone/btMultiBodyGearConstraint.cpp\
145+ src/bullet/BulletDynamics/MLCPSolvers/btLemkeAlgorithm.cpp\
146+ src/bullet/BulletDynamics/MLCPSolvers/btMLCPSolver.cpp\
147+ src/bullet/BulletDynamics/MLCPSolvers/btDantzigLCP.cpp\
148+ src/bullet/BulletDynamics/ConstraintSolver/btGearConstraint.cpp\
149+ src/bullet/BulletDynamics/ConstraintSolver/btContactConstraint.cpp\
150+ src/bullet/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp\
151+ src/bullet/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp\
152+ src/bullet/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp\
153+ src/bullet/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp\
154+ src/bullet/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp\
155+ src/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp\
156+ src/bullet/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp\
157+ src/bullet/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp\
158+ src/bullet/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp\
159+ src/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.cpp\
160+ src/bullet/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp\
161+ src/bullet/BulletDynamics/ConstraintSolver/btFixedConstraint.cpp\
162+ src/bullet/BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.cpp\
163+ src/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp\
164+ src/bullet/LinearMath/btQuickprof.cpp\
165+ src/bullet/LinearMath/btSerializer64.cpp\
166+ src/bullet/LinearMath/btConvexHullComputer.cpp\
167+ src/bullet/LinearMath/btThreads.cpp\
168+ src/bullet/LinearMath/btSerializer.cpp\
169+ src/bullet/LinearMath/btGeometryUtil.cpp\
170+ src/bullet/LinearMath/btPolarDecomposition.cpp\
171+ src/bullet/LinearMath/btVector3.cpp\
172+ src/bullet/LinearMath/btConvexHull.cpp\
173+ src/bullet/LinearMath/btAlignedAllocator.cpp\
174+ src/custom/gdx/dynamics/FilterableVehicleRaycaster.cpp\
175+ src/custom/gdx/dynamics/InternalTickCallback.cpp\
176+ src/custom/gdx/common/jniHelpers.cpp\
177+ src/custom/gdx/linearmath/mathtypes.cpp\
178+ src/custom/gdx/collision/ContactListener.cpp\
179+ src/custom/gdx/collision/ClosestNotMeRayResultCallback.cpp\
180+ src/custom/gdx/collision/ContactCache.cpp\
181+ src/custom/gdx/collision/ClosestNotMeConvexResultCallback.cpp\
182+ src/extras/Serialize/BulletFileLoader/bFile.cpp\
183+ src/extras/Serialize/BulletFileLoader/btBulletFile.cpp\
184+ src/extras/Serialize/BulletFileLoader/bChunk.cpp\
185+ src/extras/Serialize/BulletFileLoader/bDNA.cpp\
186+ src/extras/Serialize/BulletWorldImporter/btWorldImporter.cpp\
187+ src/extras/Serialize/BulletWorldImporter/btBulletWorldImporter.cpp\
188+ src/extras/InverseDynamics/invdyn_bullet_comparison.cpp\
189+ src/extras/InverseDynamics/MultiBodyTreeDebugGraph.cpp\
190+ src/extras/InverseDynamics/SimpleTreeCreator.cpp\
191+ src/extras/InverseDynamics/btMultiBodyTreeCreator.cpp\
192+ src/extras/InverseDynamics/DillCreator.cpp\
193+ src/extras/InverseDynamics/IDRandomUtil.cpp\
194+ src/extras/InverseDynamics/MultiBodyTreeCreator.cpp\
195+ src/extras/InverseDynamics/User2InternalIndex.cpp\
196+ src/extras/InverseDynamics/CoilCreator.cpp\
197+ src/extras/InverseDynamics/MultiBodyNameMap.cpp\
198+ src/extras/InverseDynamics/RandomTreeCreator.cpp\
199+ src/extras/InverseDynamics/CloneTreeCreator.cpp
200+
201+include $(BUILD_SHARED_LIBRARY)
--- /dev/null
+++ b/extensions/gdx-bullet/jni/Application.mk
@@ -0,0 +1,4 @@
1+APP_ABI := all
2+APP_PLATFORM := android-9
3+
4+APP_STL := c++_static
\ No newline at end of file
--- /dev/null
+++ b/extensions/gdx-bullet/jni/Info.plist
@@ -0,0 +1,51 @@
1+<?xml version="1.0" encoding="UTF-8"?>
2+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+<plist version="1.0">
4+<dict>
5+ <key>BuildMachineOSBuild</key>
6+ <string>19H1922</string>
7+ <key>CFBundleDevelopmentRegion</key>
8+ <string>en</string>
9+ <key>CFBundleExecutable</key>
10+ <string>%libName%</string>
11+ <key>CFBundleIdentifier</key>
12+ <string>%identifier%</string>
13+ <key>CFBundleInfoDictionaryVersion</key>
14+ <string>6.0</string>
15+ <key>CFBundleName</key>
16+ <string>%libName%</string>
17+ <key>CFBundlePackageType</key>
18+ <string>FMWK</string>
19+ <key>CFBundleShortVersionString</key>
20+ <string>1.0</string>
21+ <key>CFBundleSupportedPlatforms</key>
22+ <array>
23+ <string>iPhoneOS</string>
24+ </array>
25+ <key>CFBundleVersion</key>
26+ <string>1</string>
27+ <key>DTCompiler</key>
28+ <string>com.apple.compilers.llvm.clang.1_0</string>
29+ <key>DTPlatformBuild</key>
30+ <string>18D46</string>
31+ <key>DTPlatformName</key>
32+ <string>%platform%</string>
33+ <key>DTPlatformVersion</key>
34+ <string>14.4</string>
35+ <key>DTSDKBuild</key>
36+ <string>18D46</string>
37+ <key>DTSDKName</key>
38+ <string>iphoneos14.4</string>
39+ <key>DTXcode</key>
40+ <string>1240</string>
41+ <key>DTXcodeBuild</key>
42+ <string>12D4e</string>
43+ <key>MinimumOSVersion</key>
44+ <string>%minIOSVersion%</string>
45+ <key>UIDeviceFamily</key>
46+ <array>
47+ <integer>1</integer>
48+ <integer>2</integer>
49+ </array>
50+</dict>
51+</plist>
--- /dev/null
+++ b/extensions/gdx-bullet/jni/build-android32.xml
@@ -0,0 +1,33 @@
1+<project name="android-natives" basedir="." default="postcompile">
2+ <property environment="env" />
3+ <!-- the suffix ndk-build executable -->
4+ <property name="ndkSuffix" value="" />
5+
6+ <target name="clean" depends="check-for-ndk" if="has-ndk-build">
7+ <exec executable="${env.NDK_HOME}/ndk-build${ndkSuffix}" failonerror="true">
8+ <arg value="clean"/>
9+ </exec>
10+ </target>
11+
12+ <target name="precompile" depends="check-for-ndk">
13+
14+ </target>
15+
16+ <target name="compile-natives" depends="precompile" if="has-ndk-build">
17+ <echo>ndk_home: ${env.NDK_HOME}</echo>
18+ <exec executable="${env.NDK_HOME}/ndk-build${ndkSuffix}" failonerror="true"/>
19+ </target>
20+
21+ <target name="postcompile" depends="compile-natives">
22+
23+ </target>
24+
25+ <target name="check-for-ndk">
26+ <condition property="ndk-build-found">
27+ <available file="ndk-build${ndkSuffix}" filepath="${env.NDK_HOME}"/>
28+ </condition>
29+ <condition property="has-ndk-build">
30+ <equals arg1="${ndk-build-found}" arg2="true"/>
31+ </condition>
32+ </target>
33+</project>
--- /dev/null
+++ b/extensions/gdx-bullet/jni/build-ios32.xml
@@ -0,0 +1,389 @@
1+<project name="gdx-bullet-IOS-32" basedir="." default="postcompile">
2+ <!-- include the environment -->
3+ <property environment="env"/>
4+ <!-- output directory for temporary object files -->
5+ <property name="buildDir" value="target/ios32" />
6+ <property name="absolute.buildDir" location="${buildDir}"/>
7+ <!-- output directory for the shared library -->
8+ <property name="libsDir" value="../libs/ios32" />
9+ <!-- the name of the shared library -->
10+ <property name="libName" value="gdx-bullet."/>
11+ <!-- the name of the xcframework library -->
12+ <property name="xcframeworkName" value="gdx-bullet"/>
13+ <!-- the bundle identifier of the xcframework library -->
14+ <property name="xcframeworkBundleIdentifier" value="gdx.jnigen.gdx-bullet"/>
15+ <!-- The minimum iOS version -->
16+ <property name="minIOSVersion" value="11.0"/>
17+ <!-- the jni header jniPlatform to use -->
18+ <property name="jniPlatform" value="mac"/>
19+ <!-- the compiler to use when compiling c files -->
20+ <property name="cCompiler" value="clang"/>
21+ <!-- the compiler to use when compiling c++ files -->
22+ <property name="cppCompiler" value="clang++"/>
23+ <!-- the command to use when archiving files -->
24+ <property name="archiver" value="ar"/>
25+ <!-- the compilerPrefix for the C & C++ compilers -->
26+ <property name="compilerPrefix" value=""/>
27+ <!-- the compilerSuffix for the C & C++ compilers -->
28+ <property name="compilerSuffix" value="" />
29+
30+ <property name="iphoneos-sdk" value="/Applications/Xcode-15.1.0-Beta.2.app/Contents/Developer/Platforms/XROS.platform/Developer/SDKs/XROS.sdk/"/>
31+ <property name="iphonesimulator-sdk" value="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk"/>
32+
33+
34+ <!-- define gcc compiler, options and files to compile -->
35+ <property name="gcc" value="${compilerPrefix}${cCompiler}${compilerSuffix}"/>
36+ <property name="gcc-opts" value="-c -Wall -O2 -stdlib=libc++"/>
37+ <fileset id="gcc-files" dir="./">
38+ <exclude name="target/"/>
39+ <include name="memcpy_wrap.c"/>
40+ <include name="**/*.c"/>
41+
42+ <exclude name="src/bullet/BulletMultiThreaded/GpuSoftBodySolvers/**"/>
43+
44+ </fileset>
45+
46+ <!-- define g++ compiler, options and files to compile -->
47+ <property name="g++" value="${compilerPrefix}${cppCompiler}${compilerSuffix}"/>
48+ <property name="g++-opts" value="-c -Wall -O2 -stdlib=libc++ -fno-strict-aliasing -fno-rtti -DBT_NO_PROFILE -DBT_USE_INVERSE_DYNAMICS_WITH_BULLET2 -stdlib=libc++"/>
49+ <fileset id="g++-files" dir="./">
50+ <exclude name="target/"/>
51+ <include name="**/*.cpp"/>
52+
53+ <exclude name="src/bullet/BulletMultiThreaded/GpuSoftBodySolvers/**"/>
54+
55+ </fileset>
56+
57+ <!-- define linker and options -->
58+ <property name="linker" value="${cppCompiler}" />
59+ <property name="linker-opts" value="-shared -stdlib=libc++ -install_name @rpath/${libName}.framework/${libName}"/>
60+ <property name="libraries" value=""/>
61+
62+ <!-- cleans the build directory, removes all object files and shared libs -->
63+ <target name="clean">
64+ <delete includeemptydirs="true" quiet="true">
65+ <fileset dir="${buildDir}"/>
66+ <fileset dir="${libsDir}" includes="**/*"/>
67+ </delete>
68+ </target>
69+
70+ <target name="create-build-dir">
71+ <!-- FIXME this is pretty nasty :/
72+ The source files are copied to the output folders
73+ thereby creating the directory hiearchy.
74+ -->
75+ <copy todir="${buildDir}">
76+ <fileset refid="g++-files"/>
77+ <fileset refid="gcc-files"/>
78+ </copy>
79+ <copy todir="${buildDir}/x86_64">
80+ <fileset refid="g++-files"/>
81+ <fileset refid="gcc-files"/>
82+ </copy>
83+ <copy todir="${buildDir}/arm64-simulator">
84+ <fileset refid="g++-files"/>
85+ <fileset refid="gcc-files"/>
86+ </copy>
87+ <copy todir="${buildDir}/arm64">
88+ <fileset refid="g++-files"/>
89+ <fileset refid="gcc-files"/>
90+ </copy>
91+ <delete>
92+ <fileset dir="${buildDir}/x86_64">
93+ <include name="*"/>
94+ </fileset>
95+ <fileset dir="${buildDir}/arm64-simulator">
96+ <include name="*"/>
97+ </fileset>
98+ <fileset dir="${buildDir}/arm64">
99+ <include name="*"/>
100+ </fileset>
101+ </delete>
102+ <mkdir dir="${libsDir}"/>
103+ </target>
104+
105+ <!-- compiles all C and C++ files to object files in the build directory, for x86_64 builds-->
106+ <target name="compile-x86_64" depends="create-build-dir">
107+ <apply failonerror="false" executable="${g++}" dest="${buildDir}/x86_64" verbose="true">
108+ <arg line="-isysroot ${iphonesimulator-sdk} -arch x86_64 -mios-simulator-version-min=${minIOSVersion} ${g++-opts}"/>
109+ <arg value="-Ijni-headers"/>
110+ <arg value="-Ijni-headers/${jniPlatform}"/>
111+ <arg value="-I."/>
112+ <arg value="-g"/>
113+ <arg value="-Isrc/bullet/"/>
114+ <arg value="-Isrc/custom/"/>
115+ <arg value="-Isrc/extras/Serialize/"/>
116+ <arg value="-Isrc/extras/"/>
117+
118+ <srcfile/>
119+ <arg value="-o"/>
120+ <targetfile/>
121+ <fileset refid="g++-files"/>
122+ <compositemapper>
123+ <mapper type="glob" from="*.cpp" to="*.o"/>
124+ <mapper type="glob" from="*.mm" to="*.o"/>
125+ </compositemapper>
126+ </apply>
127+ <apply failonerror="false" executable="${gcc}" dest="${buildDir}/x86_64" verbose="true">
128+ <arg line="-isysroot ${iphonesimulator-sdk} -arch x86_64 -mios-simulator-version-min=${minIOSVersion} ${gcc-opts}"/>
129+ <arg value="-Ijni-headers"/>
130+ <arg value="-Ijni-headers/${jniPlatform}"/>
131+ <arg value="-I."/>
132+ <arg value="-g"/>
133+ <arg value="-Isrc/bullet/"/>
134+ <arg value="-Isrc/custom/"/>
135+ <arg value="-Isrc/extras/Serialize/"/>
136+ <arg value="-Isrc/extras/"/>
137+
138+ <srcfile/>
139+ <arg value="-o"/>
140+ <targetfile/>
141+ <fileset refid="gcc-files"/>
142+ <compositemapper>
143+ <mapper type="glob" from="*.c" to="*.o"/>
144+ </compositemapper>
145+ </apply>
146+ </target>
147+
148+ <!-- links the shared library based on the previously compiled object files -->
149+ <target name="link-x86_64" depends="compile-x86_64">
150+ <fileset dir="${buildDir}/x86_64" id="objFileSet">
151+ <patternset>
152+ <include name="**/*.o" />
153+ </patternset>
154+ </fileset>
155+ <pathconvert pathsep=" " property="objFiles" refid="objFileSet" />
156+ <mkdir dir="${libsDir}" />
157+ <exec executable="${linker}" failonerror="false" dir="${buildDir}/x86_64">
158+ <arg line="-isysroot ${iphonesimulator-sdk} -arch x86_64 -mios-simulator-version-min=${minIOSVersion} ${linker-opts}"/>
159+ <arg value="-o" />
160+ <arg path="${buildDir}/x86_64/${libName}" />
161+ <arg line="${objFiles}"/>
162+ <arg line="${libraries}" />
163+ </exec>
164+ </target>
165+
166+
167+ <!-- compiles all C and C++ files to object files in the build directory, for arm64 simulator builds-->
168+ <target name="compile-arm64-simulator" depends="create-build-dir">
169+ <apply failonerror="false" executable="${g++}" dest="${buildDir}/arm64-simulator" verbose="true">
170+ <arg line="-isysroot ${iphonesimulator-sdk} -arch arm64 -mios-simulator-version-min=${minIOSVersion} ${g++-opts}"/>
171+ <arg value="-Ijni-headers"/>
172+ <arg value="-Ijni-headers/${jniPlatform}"/>
173+ <arg value="-I."/>
174+ <arg value="-g"/>
175+ <arg value="-Isrc/bullet/"/>
176+ <arg value="-Isrc/custom/"/>
177+ <arg value="-Isrc/extras/Serialize/"/>
178+ <arg value="-Isrc/extras/"/>
179+
180+ <srcfile/>
181+ <arg value="-o"/>
182+ <targetfile/>
183+ <fileset refid="g++-files"/>
184+ <compositemapper>
185+ <mapper type="glob" from="*.cpp" to="*.o"/>
186+ <mapper type="glob" from="*.mm" to="*.o"/>
187+ </compositemapper>
188+ </apply>
189+ <apply failonerror="false" executable="${gcc}" dest="${buildDir}/arm64-simulator" verbose="true">
190+ <arg line="-isysroot ${iphonesimulator-sdk} -arch arm64 -mios-simulator-version-min=${minIOSVersion} ${gcc-opts}"/>
191+ <arg value="-Ijni-headers"/>
192+ <arg value="-Ijni-headers/${jniPlatform}"/>
193+ <arg value="-I."/>
194+ <arg value="-g"/>
195+ <arg value="-Isrc/bullet/"/>
196+ <arg value="-Isrc/custom/"/>
197+ <arg value="-Isrc/extras/Serialize/"/>
198+ <arg value="-Isrc/extras/"/>
199+
200+ <srcfile/>
201+ <arg value="-o"/>
202+ <targetfile/>
203+ <fileset refid="gcc-files"/>
204+ <compositemapper>
205+ <mapper type="glob" from="*.c" to="*.o"/>
206+ </compositemapper>
207+ </apply>
208+ </target>
209+
210+ <!-- links the shared library based on the previously compiled object files -->
211+ <target name="link-arm64-simulator" depends="compile-arm64-simulator">
212+ <fileset dir="${buildDir}/arm64-simulator" id="objFileSetArm64Simulator">
213+ <patternset>
214+ <include name="**/*.o" />
215+ </patternset>
216+ </fileset>
217+ <pathconvert pathsep=" " property="objFilesArm64Simulator" refid="objFileSetArm64Simulator" />
218+ <mkdir dir="${libsDir}" />
219+ <exec executable="${linker}" failonerror="false" dir="${buildDir}/arm64-simulator">
220+ <arg line="-isysroot ${iphonesimulator-sdk} -arch arm64 -mios-simulator-version-min=${minIOSVersion} ${linker-opts}"/>
221+ <arg value="-o" />
222+ <arg path="${buildDir}/arm64-simulator/${libName}" />
223+ <arg line="${objFilesArm64Simulator}"/>
224+ <arg line="${libraries}" />
225+ </exec>
226+ </target>
227+
228+ <!-- compiles all C and C++ files to object files in the build directory, for arm64 builds-->
229+ <target name="compile-arm64" depends="create-build-dir">
230+ <apply failonerror="true" executable="${g++}" dest="${buildDir}/arm64" verbose="true">
231+ <arg line="-isysroot ${iphoneos-sdk} -arch arm64 -miphoneos-version-min=${minIOSVersion} ${g++-opts}"/>
232+ <arg value="-Ijni-headers"/>
233+ <arg value="-Ijni-headers/${jniPlatform}"/>
234+ <arg value="-I."/>
235+ <arg value="-g"/>
236+ <arg value="-Isrc/bullet/"/>
237+ <arg value="-Isrc/custom/"/>
238+ <arg value="-Isrc/extras/Serialize/"/>
239+ <arg value="-Isrc/extras/"/>
240+
241+ <srcfile/>
242+ <arg value="-o"/>
243+ <targetfile/>
244+ <fileset refid="g++-files"/>
245+ <compositemapper>
246+ <mapper type="glob" from="*.cpp" to="*.o"/>
247+ <mapper type="glob" from="*.mm" to="*.o"/>
248+ </compositemapper>
249+ </apply>
250+ <apply failonerror="true" executable="${gcc}" dest="${buildDir}/arm64" verbose="true">
251+ <arg line="-isysroot ${iphoneos-sdk} -arch arm64 -miphoneos-version-min=${minIOSVersion} ${gcc-opts}"/>
252+ <arg value="-Ijni-headers"/>
253+ <arg value="-Ijni-headers/${jniPlatform}"/>
254+ <arg value="-I."/>
255+ <arg value="-g"/>
256+ <arg value="-Isrc/bullet/"/>
257+ <arg value="-Isrc/custom/"/>
258+ <arg value="-Isrc/extras/Serialize/"/>
259+ <arg value="-Isrc/extras/"/>
260+
261+ <srcfile/>
262+ <arg value="-o"/>
263+ <targetfile/>
264+ <fileset refid="gcc-files"/>
265+ <compositemapper>
266+ <mapper type="glob" from="*.c" to="*.o"/>
267+ </compositemapper>
268+ </apply>
269+ </target>
270+
271+ <!-- links the shared library based on the previously compiled object files -->
272+ <target name="link-arm64" depends="compile-arm64">
273+ <fileset dir="${buildDir}/arm64" id="objFileSetArm64">
274+ <patternset>
275+ <include name="**/*.o" />
276+ </patternset>
277+ </fileset>
278+ <pathconvert pathsep=" " property="objFilesArm64" refid="objFileSetArm64" />
279+ <mkdir dir="${libsDir}" />
280+ <exec executable="${linker}" failonerror="true" dir="${buildDir}/arm64">
281+ <arg line="-isysroot ${iphoneos-sdk} -arch arm64 -miphoneos-version-min=${minIOSVersion} ${linker-opts}"/>
282+ <arg value="-o" />
283+ <arg path="${buildDir}/arm64/${libName}" />
284+ <arg line="${objFilesArm64}"/>
285+ <arg line="${libraries}" />
286+ </exec>
287+ </target>
288+
289+ <target name="archive-fat" depends="link-x86_64,link-arm64-simulator,link-arm64">
290+ <mkdir dir="${buildDir}/device/${libName}.framework/"/>
291+ <copy file="${buildDir}/arm64/${libName}" tofile="${buildDir}/device/${libName}.framework/${libName}"/>
292+ <mkdir dir="${buildDir}/simulator/${libName}.framework/"/>
293+ <exec executable="lipo" failonerror="true" dir="${buildDir}">
294+ <arg line="-create -output simulator/${libName}.framework/${libName} x86_64/${libName} arm64-simulator/${libName}"/>
295+ </exec>
296+ </target>
297+
298+ <target name="build-plist-device" depends="archive-fat">
299+ <copy file="Info.plist" tofile="${buildDir}/device/${libName}.framework/Info.plist"/>
300+ <exec executable="/usr/libexec/PlistBuddy" failonerror="true" dir="${buildDir}">
301+ <arg value="-c"/>
302+ <arg value="Set :CFBundleName ${libName}"/>
303+ <arg value="-c"/>
304+ <arg value="Set :CFBundleExecutable ${libName}"/>
305+ <arg value="-c"/>
306+ <arg value="Set :DTPlatformName iphoneos"/>
307+ <arg value="-c"/>
308+ <arg value="Set :CFBundleIdentifier ${xcframeworkBundleIdentifier}"/>
309+ <arg value="-c"/>
310+ <arg value="Set :MinimumOSVersion ${minIOSVersion}"/>
311+ <arg value="${absolute.buildDir}/device/${libName}.framework/Info.plist"/>
312+ </exec>
313+ <exec executable="plutil" failonerror="true" dir="${buildDir}">
314+ <arg line="-convert"/>
315+ <arg line="binary1"/>
316+ <arg line="${absolute.buildDir}/device/${libName}.framework/Info.plist"/>
317+ </exec>
318+ </target>
319+
320+ <target name="build-plist-simulator" depends="archive-fat">
321+ <copy file="Info.plist" tofile="${buildDir}/simulator/${libName}.framework/Info.plist"/>
322+ <exec executable="/usr/libexec/PlistBuddy" failonerror="true" dir="${buildDir}">
323+ <arg value="-c"/>
324+ <arg value="Set :CFBundleName ${libName}"/>
325+ <arg value="-c"/>
326+ <arg value="Set :CFBundleExecutable ${libName}"/>
327+ <arg value="-c"/>
328+ <arg value="Set :DTPlatformName iphonesimulator"/>
329+ <arg value="-c"/>
330+ <arg value="Set :CFBundleIdentifier ${xcframeworkBundleIdentifier}"/>
331+ <arg value="-c"/>
332+ <arg value="Set :MinimumOSVersion ${minIOSVersion}"/>
333+ <arg value="${absolute.buildDir}/simulator/${libName}.framework/Info.plist"/>
334+ </exec>
335+ <exec executable="plutil" failonerror="true" dir="${buildDir}">
336+ <arg line="-convert"/>
337+ <arg line="binary1"/>
338+ <arg line="${absolute.buildDir}/simulator/${libName}.framework/Info.plist"/>
339+ </exec>
340+ </target>
341+
342+ <target name="generate-dsyms" depends="build-plist-device,build-plist-simulator">
343+ <exec executable="dsymutil" failonerror="true" dir="${buildDir}">
344+ <arg line="${absolute.buildDir}/simulator/${libName}.framework/${libName}"/>
345+ <arg line="-o"/>
346+ <arg line="${absolute.buildDir}/simulator/${libName}.framework.dSYM"/>
347+ </exec>
348+ <exec executable="dsymutil" failonerror="true" dir="${buildDir}">
349+ <arg line="${absolute.buildDir}/device/${libName}.framework/${libName}"/>
350+ <arg line="-o"/>
351+ <arg line="${absolute.buildDir}/device/${libName}.framework.dSYM"/>
352+ </exec>
353+ </target>
354+
355+
356+ <target name="strip" depends="generate-dsyms">
357+ <exec executable="strip" failonerror="true" dir="${buildDir}">
358+ <arg line="-x"/>
359+ <arg line="${absolute.buildDir}/simulator/${libName}.framework/${libName}"/>
360+ </exec>
361+ <exec executable="strip" failonerror="true" dir="${buildDir}">
362+ <arg line="-x"/>
363+ <arg line="${absolute.buildDir}/device/${libName}.framework/${libName}"/>
364+ </exec>
365+ </target>
366+
367+ <target name="create-xcframework" depends="strip">
368+ <exec executable="xcodebuild" failonerror="true">
369+ <arg line="-create-xcframework"/>
370+
371+ <arg line="-framework"/>
372+ <arg line="${buildDir}/device/${libName}.framework"/>
373+ <arg line="-debug-symbols"/>
374+ <arg line="${absolute.buildDir}/device/${libName}.framework.dSYM"/>
375+
376+ <arg line="-framework"/>
377+ <arg line="${buildDir}/simulator/${libName}.framework"/>
378+ <arg line="-debug-symbols"/>
379+ <arg line="${absolute.buildDir}/simulator/${libName}.framework.dSYM"/>
380+
381+ <arg line="-output"/>
382+ <arg line="${libsDir}/${xcframeworkName}.xcframework"/>
383+ </exec>
384+ </target>
385+
386+ <target name="postcompile" depends="create-xcframework">
387+
388+ </target>
389+</project>
--- /dev/null
+++ b/extensions/gdx-bullet/jni/build-linux64.xml
@@ -0,0 +1,186 @@
1+<project name="gdx-bullet-Linux-64" basedir="." default="postcompile">
2+ <!-- include the environment -->
3+ <property environment="env"/>
4+ <!-- output directory for temporary object files -->
5+ <property name="buildDir" value="target/linux64" />
6+ <!-- output directory for the shared library -->
7+ <property name="libsDir" value="../libs/linux64" />
8+ <!-- the name of the shared library -->
9+ <property name="libName" value="libgdx-bullet64.so"/>
10+ <!-- the jni header jniPlatform to use -->
11+ <property name="jniPlatform" value="linux"/>
12+ <!-- the compiler to use when compiling c files -->
13+ <property name="cCompiler" value="gcc"/>
14+ <!-- the compiler to use when compiling c++ files -->
15+ <property name="cppCompiler" value="g++"/>
16+ <!-- the command to use when archiving files -->
17+ <property name="archiver" value="ar"/>
18+ <!-- the compilerPrefix for the C & C++ compilers -->
19+ <property name="compilerPrefix" value=""/>
20+ <!-- the compilerSuffix for the C & C++ compilers -->
21+ <property name="compilerSuffix" value="" />
22+
23+ <!-- define gcc compiler, options and files to compile -->
24+ <property name="gcc" value="${compilerPrefix}${cCompiler}${compilerSuffix}"/>
25+ <property name="gcc-opts" value="-c -Wall -O2 -mfpmath=sse -msse -fmessage-length=0 -m64 -fPIC"/>
26+ <fileset id="gcc-files" dir="./">
27+ <exclude name="target/"/>
28+ <include name="memcpy_wrap.c"/>
29+ <include name="**/*.c"/>
30+
31+ <exclude name="src/bullet/BulletMultiThreaded/GpuSoftBodySolvers/**"/>
32+
33+ </fileset>
34+
35+ <!-- define g++ compiler, options and files to compile -->
36+ <property name="g++" value="${compilerPrefix}${cppCompiler}${compilerSuffix}"/>
37+ <property name="g++-opts" value="-c -Wall -O2 -mfpmath=sse -msse -fmessage-length=0 -m64 -fPIC -fno-strict-aliasing -fno-rtti -DBT_NO_PROFILE -DBT_USE_INVERSE_DYNAMICS_WITH_BULLET2"/>
38+ <fileset id="g++-files" dir="./">
39+ <exclude name="target/"/>
40+ <include name="**/*.cpp"/>
41+
42+ <exclude name="src/bullet/BulletMultiThreaded/GpuSoftBodySolvers/**"/>
43+
44+ </fileset>
45+
46+ <!-- define linker and options -->
47+ <property name="linker" value="${compilerPrefix}${cppCompiler}${compilerSuffix}"/>
48+ <property name="linker-opts" value="-shared -m64 -Wl,-wrap,memcpy"/>
49+ <property name="libraries" value=""/>
50+
51+ <!-- define stripper -->
52+ <property name="stripper" value="${compilerPrefix}strip${compilerSuffix}"/>
53+
54+ <!-- cleans the build directory, removes all object files and shared libs -->
55+ <target name="clean">
56+ <delete includeemptydirs="true" quiet="true">
57+ <fileset dir="${buildDir}"/>
58+ <fileset dir="${libsDir}" includes="**/*" excludes="**/.svn"/>
59+ </delete>
60+ </target>
61+
62+ <target name="precompile">
63+ <condition property="compiler-found">
64+ <and>
65+ <or>
66+ <!-- Include both b/c Windows might be either -->
67+ <available file="${g++}" filepath="${env.PATH}"/>
68+ <available file="${g++}" filepath="${env.Path}"/>
69+ </or>
70+ <or>
71+ <!-- Include both b/c Windows might be either -->
72+ <available file="${gcc}" filepath="${env.PATH}"/>
73+ <available file="${gcc}" filepath="${env.Path}"/>
74+ </or>
75+ </and>
76+ </condition>
77+ <condition property="has-compiler">
78+ <equals arg1="${compiler-found}" arg2="true"/>
79+ </condition>
80+ <condition property="stripper-found">
81+ <or>
82+ <!-- Include both b/c Windows might be either -->
83+ <available file="${stripper}" filepath="${env.PATH}"/>
84+ <available file="${stripper}" filepath="${env.Path}"/>
85+ </or>
86+ </condition>
87+ <condition property="should-strip">
88+ <and>
89+ <equals arg1="${stripper-found}" arg2="true"/>
90+ <equals arg1="${release}" arg2="true"/>
91+ <!-- Don't strip mac osx libs -->
92+ <not>
93+ <contains string="${libName}" substring="dylib"/>
94+ </not>
95+ </and>
96+ </condition>
97+
98+ </target>
99+
100+ <target name="create-build-dir" depends="precompile" if="has-compiler">
101+ <!-- FIXME this is pretty nasty :/ -->
102+ <copy todir="${buildDir}">
103+ <fileset refid="g++-files"/>
104+ <fileset refid="gcc-files"/>
105+ </copy>
106+ <delete>
107+ <fileset dir="${buildDir}">
108+ <include name="*"/>
109+ <exclude name="*.o"/>
110+ </fileset>
111+ </delete>
112+ </target>
113+
114+ <!-- compiles all C and C++ files to object files in the build directory -->
115+ <target name="compile" depends="create-build-dir" if="has-compiler">
116+ <mkdir dir="${buildDir}"/>
117+ <apply failonerror="true" executable="${g++}" dest="${buildDir}" verbose="true">
118+ <arg line="${g++-opts}"/>
119+ <arg value="-Ijni-headers"/>
120+ <arg value="-Ijni-headers/${jniPlatform}"/>
121+ <arg value="-I."/>
122+ <arg value="-Isrc/bullet/"/>
123+ <arg value="-Isrc/custom/"/>
124+ <arg value="-Isrc/extras/Serialize/"/>
125+ <arg value="-Isrc/extras/"/>
126+
127+ <srcfile/>
128+ <arg value="-o"/>
129+ <targetfile/>
130+ <fileset refid="g++-files"/>
131+ <compositemapper>
132+ <mapper type="glob" from="*.cpp" to="*.o"/>
133+ <mapper type="glob" from="*.mm" to="*.o"/>
134+ </compositemapper>
135+ </apply>
136+ <apply failonerror="true" executable="${gcc}" dest="${buildDir}" verbose="true">
137+ <arg line="${gcc-opts}"/>
138+ <arg value="-Ijni-headers"/>
139+ <arg value="-Ijni-headers/${jniPlatform}"/>
140+ <arg value="-I."/>
141+ <arg value="-Isrc/bullet/"/>
142+ <arg value="-Isrc/custom/"/>
143+ <arg value="-Isrc/extras/Serialize/"/>
144+ <arg value="-Isrc/extras/"/>
145+
146+ <srcfile/>
147+ <arg value="-o"/>
148+ <targetfile/>
149+ <fileset refid="gcc-files"/>
150+ <compositemapper>
151+ <mapper type="glob" from="*.c" to="*.o"/>
152+ <mapper type="glob" from="*.m" to="*.o"/>
153+ </compositemapper>
154+ </apply>
155+ </target>
156+
157+ <!-- links the shared library based on the previously compiled object files -->
158+ <target name="link" depends="compile" if="has-compiler">
159+ <fileset dir="${buildDir}" id="objFileSet">
160+ <patternset>
161+ <include name="**/*.o" />
162+ </patternset>
163+ </fileset>
164+ <pathconvert pathsep=" " property="objFiles" refid="objFileSet" />
165+ <mkdir dir="${libsDir}" />
166+ <exec executable="${linker}" failonerror="true" dir="${buildDir}">
167+ <arg line="${linker-opts}" />
168+ <arg value="-o" />
169+ <arg path="${libsDir}/${libName}" />
170+ <arg line="${objFiles}"/>
171+ <arg line="${libraries}" />
172+ </exec>
173+ </target>
174+
175+ <!-- strips the shared library of debug symbols -->
176+ <target name="strip" depends="link" if="should-strip">
177+ <exec executable="${stripper}" failonerror="true" dir="${buildDir}">
178+ <arg value="--strip-unneeded"/>
179+ <arg path="${libsDir}/${libName}" />
180+ </exec>
181+ </target>
182+
183+ <target name="postcompile" depends="strip">
184+
185+ </target>
186+</project>
--- /dev/null
+++ b/extensions/gdx-bullet/jni/build-linuxarm32.xml
@@ -0,0 +1,186 @@
1+<project name="gdx-bullet-Linux-arm32" basedir="." default="postcompile">
2+ <!-- include the environment -->
3+ <property environment="env"/>
4+ <!-- output directory for temporary object files -->
5+ <property name="buildDir" value="target/linuxarm32" />
6+ <!-- output directory for the shared library -->
7+ <property name="libsDir" value="../libs/linuxarm32" />
8+ <!-- the name of the shared library -->
9+ <property name="libName" value="libgdx-bulletarm.so"/>
10+ <!-- the jni header jniPlatform to use -->
11+ <property name="jniPlatform" value="linux"/>
12+ <!-- the compiler to use when compiling c files -->
13+ <property name="cCompiler" value="gcc"/>
14+ <!-- the compiler to use when compiling c++ files -->
15+ <property name="cppCompiler" value="g++"/>
16+ <!-- the command to use when archiving files -->
17+ <property name="archiver" value="ar"/>
18+ <!-- the compilerPrefix for the C & C++ compilers -->
19+ <property name="compilerPrefix" value="arm-linux-gnueabihf-"/>
20+ <!-- the compilerSuffix for the C & C++ compilers -->
21+ <property name="compilerSuffix" value="" />
22+
23+ <!-- define gcc compiler, options and files to compile -->
24+ <property name="gcc" value="${compilerPrefix}${cCompiler}${compilerSuffix}"/>
25+ <property name="gcc-opts" value="-c -Wall -O2 -fmessage-length=0 -fPIC"/>
26+ <fileset id="gcc-files" dir="./">
27+ <exclude name="target/"/>
28+ <include name="memcpy_wrap.c"/>
29+ <include name="**/*.c"/>
30+
31+ <exclude name="src/bullet/BulletMultiThreaded/GpuSoftBodySolvers/**"/>
32+
33+ </fileset>
34+
35+ <!-- define g++ compiler, options and files to compile -->
36+ <property name="g++" value="${compilerPrefix}${cppCompiler}${compilerSuffix}"/>
37+ <property name="g++-opts" value="-c -Wall -O2 -fmessage-length=0 -fPIC -fno-strict-aliasing -fno-rtti -DBT_NO_PROFILE -DBT_USE_INVERSE_DYNAMICS_WITH_BULLET2"/>
38+ <fileset id="g++-files" dir="./">
39+ <exclude name="target/"/>
40+ <include name="**/*.cpp"/>
41+
42+ <exclude name="src/bullet/BulletMultiThreaded/GpuSoftBodySolvers/**"/>
43+
44+ </fileset>
45+
46+ <!-- define linker and options -->
47+ <property name="linker" value="${compilerPrefix}${cppCompiler}${compilerSuffix}"/>
48+ <property name="linker-opts" value="-shared"/>
49+ <property name="libraries" value=""/>
50+
51+ <!-- define stripper -->
52+ <property name="stripper" value="${compilerPrefix}strip${compilerSuffix}"/>
53+
54+ <!-- cleans the build directory, removes all object files and shared libs -->
55+ <target name="clean">
56+ <delete includeemptydirs="true" quiet="true">
57+ <fileset dir="${buildDir}"/>
58+ <fileset dir="${libsDir}" includes="**/*" excludes="**/.svn"/>
59+ </delete>
60+ </target>
61+
62+ <target name="precompile">
63+ <condition property="compiler-found">
64+ <and>
65+ <or>
66+ <!-- Include both b/c Windows might be either -->
67+ <available file="${g++}" filepath="${env.PATH}"/>
68+ <available file="${g++}" filepath="${env.Path}"/>
69+ </or>
70+ <or>
71+ <!-- Include both b/c Windows might be either -->
72+ <available file="${gcc}" filepath="${env.PATH}"/>
73+ <available file="${gcc}" filepath="${env.Path}"/>
74+ </or>
75+ </and>
76+ </condition>
77+ <condition property="has-compiler">
78+ <equals arg1="${compiler-found}" arg2="true"/>
79+ </condition>
80+ <condition property="stripper-found">
81+ <or>
82+ <!-- Include both b/c Windows might be either -->
83+ <available file="${stripper}" filepath="${env.PATH}"/>
84+ <available file="${stripper}" filepath="${env.Path}"/>
85+ </or>
86+ </condition>
87+ <condition property="should-strip">
88+ <and>
89+ <equals arg1="${stripper-found}" arg2="true"/>
90+ <equals arg1="${release}" arg2="true"/>
91+ <!-- Don't strip mac osx libs -->
92+ <not>
93+ <contains string="${libName}" substring="dylib"/>
94+ </not>
95+ </and>
96+ </condition>
97+
98+ </target>
99+
100+ <target name="create-build-dir" depends="precompile" if="has-compiler">
101+ <!-- FIXME this is pretty nasty :/ -->
102+ <copy todir="${buildDir}">
103+ <fileset refid="g++-files"/>
104+ <fileset refid="gcc-files"/>
105+ </copy>
106+ <delete>
107+ <fileset dir="${buildDir}">
108+ <include name="*"/>
109+ <exclude name="*.o"/>
110+ </fileset>
111+ </delete>
112+ </target>
113+
114+ <!-- compiles all C and C++ files to object files in the build directory -->
115+ <target name="compile" depends="create-build-dir" if="has-compiler">
116+ <mkdir dir="${buildDir}"/>
117+ <apply failonerror="true" executable="${g++}" dest="${buildDir}" verbose="true">
118+ <arg line="${g++-opts}"/>
119+ <arg value="-Ijni-headers"/>
120+ <arg value="-Ijni-headers/${jniPlatform}"/>
121+ <arg value="-I."/>
122+ <arg value="-Isrc/bullet/"/>
123+ <arg value="-Isrc/custom/"/>
124+ <arg value="-Isrc/extras/Serialize/"/>
125+ <arg value="-Isrc/extras/"/>
126+
127+ <srcfile/>
128+ <arg value="-o"/>
129+ <targetfile/>
130+ <fileset refid="g++-files"/>
131+ <compositemapper>
132+ <mapper type="glob" from="*.cpp" to="*.o"/>
133+ <mapper type="glob" from="*.mm" to="*.o"/>
134+ </compositemapper>
135+ </apply>
136+ <apply failonerror="true" executable="${gcc}" dest="${buildDir}" verbose="true">
137+ <arg line="${gcc-opts}"/>
138+ <arg value="-Ijni-headers"/>
139+ <arg value="-Ijni-headers/${jniPlatform}"/>
140+ <arg value="-I."/>
141+ <arg value="-Isrc/bullet/"/>
142+ <arg value="-Isrc/custom/"/>
143+ <arg value="-Isrc/extras/Serialize/"/>
144+ <arg value="-Isrc/extras/"/>
145+
146+ <srcfile/>
147+ <arg value="-o"/>
148+ <targetfile/>
149+ <fileset refid="gcc-files"/>
150+ <compositemapper>
151+ <mapper type="glob" from="*.c" to="*.o"/>
152+ <mapper type="glob" from="*.m" to="*.o"/>
153+ </compositemapper>
154+ </apply>
155+ </target>
156+
157+ <!-- links the shared library based on the previously compiled object files -->
158+ <target name="link" depends="compile" if="has-compiler">
159+ <fileset dir="${buildDir}" id="objFileSet">
160+ <patternset>
161+ <include name="**/*.o" />
162+ </patternset>
163+ </fileset>
164+ <pathconvert pathsep=" " property="objFiles" refid="objFileSet" />
165+ <mkdir dir="${libsDir}" />
166+ <exec executable="${linker}" failonerror="true" dir="${buildDir}">
167+ <arg line="${linker-opts}" />
168+ <arg value="-o" />
169+ <arg path="${libsDir}/${libName}" />
170+ <arg line="${objFiles}"/>
171+ <arg line="${libraries}" />
172+ </exec>
173+ </target>
174+
175+ <!-- strips the shared library of debug symbols -->
176+ <target name="strip" depends="link" if="should-strip">
177+ <exec executable="${stripper}" failonerror="true" dir="${buildDir}">
178+ <arg value="--strip-unneeded"/>
179+ <arg path="${libsDir}/${libName}" />
180+ </exec>
181+ </target>
182+
183+ <target name="postcompile" depends="strip">
184+
185+ </target>
186+</project>
--- /dev/null
+++ b/extensions/gdx-bullet/jni/build-linuxarm64.xml
@@ -0,0 +1,186 @@
1+<project name="gdx-bullet-Linux-arm64" basedir="." default="postcompile">
2+ <!-- include the environment -->
3+ <property environment="env"/>
4+ <!-- output directory for temporary object files -->
5+ <property name="buildDir" value="target/linuxarm64" />
6+ <!-- output directory for the shared library -->
7+ <property name="libsDir" value="../libs/linuxarm64" />
8+ <!-- the name of the shared library -->
9+ <property name="libName" value="libgdx-bulletarm64.so"/>
10+ <!-- the jni header jniPlatform to use -->
11+ <property name="jniPlatform" value="linux"/>
12+ <!-- the compiler to use when compiling c files -->
13+ <property name="cCompiler" value="gcc"/>
14+ <!-- the compiler to use when compiling c++ files -->
15+ <property name="cppCompiler" value="g++"/>
16+ <!-- the command to use when archiving files -->
17+ <property name="archiver" value="ar"/>
18+ <!-- the compilerPrefix for the C & C++ compilers -->
19+ <property name="compilerPrefix" value="aarch64-linux-gnu-"/>
20+ <!-- the compilerSuffix for the C & C++ compilers -->
21+ <property name="compilerSuffix" value="" />
22+
23+ <!-- define gcc compiler, options and files to compile -->
24+ <property name="gcc" value="${compilerPrefix}${cCompiler}${compilerSuffix}"/>
25+ <property name="gcc-opts" value="-c -Wall -O2 -fmessage-length=0 -fPIC"/>
26+ <fileset id="gcc-files" dir="./">
27+ <exclude name="target/"/>
28+ <include name="memcpy_wrap.c"/>
29+ <include name="**/*.c"/>
30+
31+ <exclude name="src/bullet/BulletMultiThreaded/GpuSoftBodySolvers/**"/>
32+
33+ </fileset>
34+
35+ <!-- define g++ compiler, options and files to compile -->
36+ <property name="g++" value="${compilerPrefix}${cppCompiler}${compilerSuffix}"/>
37+ <property name="g++-opts" value="-c -Wall -O2 -fmessage-length=0 -fPIC -fno-strict-aliasing -fno-rtti -DBT_NO_PROFILE -DBT_USE_INVERSE_DYNAMICS_WITH_BULLET2"/>
38+ <fileset id="g++-files" dir="./">
39+ <exclude name="target/"/>
40+ <include name="**/*.cpp"/>
41+
42+ <exclude name="src/bullet/BulletMultiThreaded/GpuSoftBodySolvers/**"/>
43+
44+ </fileset>
45+
46+ <!-- define linker and options -->
47+ <property name="linker" value="${compilerPrefix}${cppCompiler}${compilerSuffix}"/>
48+ <property name="linker-opts" value="-shared"/>
49+ <property name="libraries" value=""/>
50+
51+ <!-- define stripper -->
52+ <property name="stripper" value="${compilerPrefix}strip${compilerSuffix}"/>
53+
54+ <!-- cleans the build directory, removes all object files and shared libs -->
55+ <target name="clean">
56+ <delete includeemptydirs="true" quiet="true">
57+ <fileset dir="${buildDir}"/>
58+ <fileset dir="${libsDir}" includes="**/*" excludes="**/.svn"/>
59+ </delete>
60+ </target>
61+
62+ <target name="precompile">
63+ <condition property="compiler-found">
64+ <and>
65+ <or>
66+ <!-- Include both b/c Windows might be either -->
67+ <available file="${g++}" filepath="${env.PATH}"/>
68+ <available file="${g++}" filepath="${env.Path}"/>
69+ </or>
70+ <or>
71+ <!-- Include both b/c Windows might be either -->
72+ <available file="${gcc}" filepath="${env.PATH}"/>
73+ <available file="${gcc}" filepath="${env.Path}"/>
74+ </or>
75+ </and>
76+ </condition>
77+ <condition property="has-compiler">
78+ <equals arg1="${compiler-found}" arg2="true"/>
79+ </condition>
80+ <condition property="stripper-found">
81+ <or>
82+ <!-- Include both b/c Windows might be either -->
83+ <available file="${stripper}" filepath="${env.PATH}"/>
84+ <available file="${stripper}" filepath="${env.Path}"/>
85+ </or>
86+ </condition>
87+ <condition property="should-strip">
88+ <and>
89+ <equals arg1="${stripper-found}" arg2="true"/>
90+ <equals arg1="${release}" arg2="true"/>
91+ <!-- Don't strip mac osx libs -->
92+ <not>
93+ <contains string="${libName}" substring="dylib"/>
94+ </not>
95+ </and>
96+ </condition>
97+
98+ </target>
99+
100+ <target name="create-build-dir" depends="precompile" if="has-compiler">
101+ <!-- FIXME this is pretty nasty :/ -->
102+ <copy todir="${buildDir}">
103+ <fileset refid="g++-files"/>
104+ <fileset refid="gcc-files"/>
105+ </copy>
106+ <delete>
107+ <fileset dir="${buildDir}">
108+ <include name="*"/>
109+ <exclude name="*.o"/>
110+ </fileset>
111+ </delete>
112+ </target>
113+
114+ <!-- compiles all C and C++ files to object files in the build directory -->
115+ <target name="compile" depends="create-build-dir" if="has-compiler">
116+ <mkdir dir="${buildDir}"/>
117+ <apply failonerror="true" executable="${g++}" dest="${buildDir}" verbose="true">
118+ <arg line="${g++-opts}"/>
119+ <arg value="-Ijni-headers"/>
120+ <arg value="-Ijni-headers/${jniPlatform}"/>
121+ <arg value="-I."/>
122+ <arg value="-Isrc/bullet/"/>
123+ <arg value="-Isrc/custom/"/>
124+ <arg value="-Isrc/extras/Serialize/"/>
125+ <arg value="-Isrc/extras/"/>
126+
127+ <srcfile/>
128+ <arg value="-o"/>
129+ <targetfile/>
130+ <fileset refid="g++-files"/>
131+ <compositemapper>
132+ <mapper type="glob" from="*.cpp" to="*.o"/>
133+ <mapper type="glob" from="*.mm" to="*.o"/>
134+ </compositemapper>
135+ </apply>
136+ <apply failonerror="true" executable="${gcc}" dest="${buildDir}" verbose="true">
137+ <arg line="${gcc-opts}"/>
138+ <arg value="-Ijni-headers"/>
139+ <arg value="-Ijni-headers/${jniPlatform}"/>
140+ <arg value="-I."/>
141+ <arg value="-Isrc/bullet/"/>
142+ <arg value="-Isrc/custom/"/>
143+ <arg value="-Isrc/extras/Serialize/"/>
144+ <arg value="-Isrc/extras/"/>
145+
146+ <srcfile/>
147+ <arg value="-o"/>
148+ <targetfile/>
149+ <fileset refid="gcc-files"/>
150+ <compositemapper>
151+ <mapper type="glob" from="*.c" to="*.o"/>
152+ <mapper type="glob" from="*.m" to="*.o"/>
153+ </compositemapper>
154+ </apply>
155+ </target>
156+
157+ <!-- links the shared library based on the previously compiled object files -->
158+ <target name="link" depends="compile" if="has-compiler">
159+ <fileset dir="${buildDir}" id="objFileSet">
160+ <patternset>
161+ <include name="**/*.o" />
162+ </patternset>
163+ </fileset>
164+ <pathconvert pathsep=" " property="objFiles" refid="objFileSet" />
165+ <mkdir dir="${libsDir}" />
166+ <exec executable="${linker}" failonerror="true" dir="${buildDir}">
167+ <arg line="${linker-opts}" />
168+ <arg value="-o" />
169+ <arg path="${libsDir}/${libName}" />
170+ <arg line="${objFiles}"/>
171+ <arg line="${libraries}" />
172+ </exec>
173+ </target>
174+
175+ <!-- strips the shared library of debug symbols -->
176+ <target name="strip" depends="link" if="should-strip">
177+ <exec executable="${stripper}" failonerror="true" dir="${buildDir}">
178+ <arg value="--strip-unneeded"/>
179+ <arg path="${libsDir}/${libName}" />
180+ </exec>
181+ </target>
182+
183+ <target name="postcompile" depends="strip">
184+
185+ </target>
186+</project>
--- /dev/null
+++ b/extensions/gdx-bullet/jni/build-macosx64.xml
@@ -0,0 +1,186 @@
1+<project name="gdx-bullet-MacOsX-64" basedir="." default="postcompile">
2+ <!-- include the environment -->
3+ <property environment="env"/>
4+ <!-- output directory for temporary object files -->
5+ <property name="buildDir" value="target/macosx64" />
6+ <!-- output directory for the shared library -->
7+ <property name="libsDir" value="../libs/macosx64" />
8+ <!-- the name of the shared library -->
9+ <property name="libName" value="libgdx-bullet64.dylib"/>
10+ <!-- the jni header jniPlatform to use -->
11+ <property name="jniPlatform" value="mac"/>
12+ <!-- the compiler to use when compiling c files -->
13+ <property name="cCompiler" value="clang"/>
14+ <!-- the compiler to use when compiling c++ files -->
15+ <property name="cppCompiler" value="clang++"/>
16+ <!-- the command to use when archiving files -->
17+ <property name="archiver" value="ar"/>
18+ <!-- the compilerPrefix for the C & C++ compilers -->
19+ <property name="compilerPrefix" value=""/>
20+ <!-- the compilerSuffix for the C & C++ compilers -->
21+ <property name="compilerSuffix" value="" />
22+
23+ <!-- define gcc compiler, options and files to compile -->
24+ <property name="gcc" value="${compilerPrefix}${cCompiler}${compilerSuffix}"/>
25+ <property name="gcc-opts" value="-c -Wall -O2 -arch x86_64 -DFIXED_POINT -fmessage-length=0 -fPIC -mmacosx-version-min=10.7 -stdlib=libc++"/>
26+ <fileset id="gcc-files" dir="./">
27+ <exclude name="target/"/>
28+ <include name="memcpy_wrap.c"/>
29+ <include name="**/*.c"/>
30+
31+ <exclude name="src/bullet/BulletMultiThreaded/GpuSoftBodySolvers/**"/>
32+
33+ </fileset>
34+
35+ <!-- define g++ compiler, options and files to compile -->
36+ <property name="g++" value="${compilerPrefix}${cppCompiler}${compilerSuffix}"/>
37+ <property name="g++-opts" value="-c -Wall -O2 -arch x86_64 -DFIXED_POINT -fmessage-length=0 -fPIC -mmacosx-version-min=10.7 -stdlib=libc++ -fno-strict-aliasing -fno-rtti -DBT_NO_PROFILE -DBT_USE_INVERSE_DYNAMICS_WITH_BULLET2"/>
38+ <fileset id="g++-files" dir="./">
39+ <exclude name="target/"/>
40+ <include name="**/*.cpp"/>
41+
42+ <exclude name="src/bullet/BulletMultiThreaded/GpuSoftBodySolvers/**"/>
43+
44+ </fileset>
45+
46+ <!-- define linker and options -->
47+ <property name="linker" value="${compilerPrefix}${cppCompiler}${compilerSuffix}"/>
48+ <property name="linker-opts" value="-shared -arch x86_64 -mmacosx-version-min=10.7 -stdlib=libc++"/>
49+ <property name="libraries" value=""/>
50+
51+ <!-- define stripper -->
52+ <property name="stripper" value="${compilerPrefix}strip${compilerSuffix}"/>
53+
54+ <!-- cleans the build directory, removes all object files and shared libs -->
55+ <target name="clean">
56+ <delete includeemptydirs="true" quiet="true">
57+ <fileset dir="${buildDir}"/>
58+ <fileset dir="${libsDir}" includes="**/*" excludes="**/.svn"/>
59+ </delete>
60+ </target>
61+
62+ <target name="precompile">
63+ <condition property="compiler-found">
64+ <and>
65+ <or>
66+ <!-- Include both b/c Windows might be either -->
67+ <available file="${g++}" filepath="${env.PATH}"/>
68+ <available file="${g++}" filepath="${env.Path}"/>
69+ </or>
70+ <or>
71+ <!-- Include both b/c Windows might be either -->
72+ <available file="${gcc}" filepath="${env.PATH}"/>
73+ <available file="${gcc}" filepath="${env.Path}"/>
74+ </or>
75+ </and>
76+ </condition>
77+ <condition property="has-compiler">
78+ <equals arg1="${compiler-found}" arg2="true"/>
79+ </condition>
80+ <condition property="stripper-found">
81+ <or>
82+ <!-- Include both b/c Windows might be either -->
83+ <available file="${stripper}" filepath="${env.PATH}"/>
84+ <available file="${stripper}" filepath="${env.Path}"/>
85+ </or>
86+ </condition>
87+ <condition property="should-strip">
88+ <and>
89+ <equals arg1="${stripper-found}" arg2="true"/>
90+ <equals arg1="${release}" arg2="true"/>
91+ <!-- Don't strip mac osx libs -->
92+ <not>
93+ <contains string="${libName}" substring="dylib"/>
94+ </not>
95+ </and>
96+ </condition>
97+
98+ </target>
99+
100+ <target name="create-build-dir" depends="precompile" if="has-compiler">
101+ <!-- FIXME this is pretty nasty :/ -->
102+ <copy todir="${buildDir}">
103+ <fileset refid="g++-files"/>
104+ <fileset refid="gcc-files"/>
105+ </copy>
106+ <delete>
107+ <fileset dir="${buildDir}">
108+ <include name="*"/>
109+ <exclude name="*.o"/>
110+ </fileset>
111+ </delete>
112+ </target>
113+
114+ <!-- compiles all C and C++ files to object files in the build directory -->
115+ <target name="compile" depends="create-build-dir" if="has-compiler">
116+ <mkdir dir="${buildDir}"/>
117+ <apply failonerror="true" executable="${g++}" dest="${buildDir}" verbose="true">
118+ <arg line="${g++-opts}"/>
119+ <arg value="-Ijni-headers"/>
120+ <arg value="-Ijni-headers/${jniPlatform}"/>
121+ <arg value="-I."/>
122+ <arg value="-Isrc/bullet/"/>
123+ <arg value="-Isrc/custom/"/>
124+ <arg value="-Isrc/extras/Serialize/"/>
125+ <arg value="-Isrc/extras/"/>
126+
127+ <srcfile/>
128+ <arg value="-o"/>
129+ <targetfile/>
130+ <fileset refid="g++-files"/>
131+ <compositemapper>
132+ <mapper type="glob" from="*.cpp" to="*.o"/>
133+ <mapper type="glob" from="*.mm" to="*.o"/>
134+ </compositemapper>
135+ </apply>
136+ <apply failonerror="true" executable="${gcc}" dest="${buildDir}" verbose="true">
137+ <arg line="${gcc-opts}"/>
138+ <arg value="-Ijni-headers"/>
139+ <arg value="-Ijni-headers/${jniPlatform}"/>
140+ <arg value="-I."/>
141+ <arg value="-Isrc/bullet/"/>
142+ <arg value="-Isrc/custom/"/>
143+ <arg value="-Isrc/extras/Serialize/"/>
144+ <arg value="-Isrc/extras/"/>
145+
146+ <srcfile/>
147+ <arg value="-o"/>
148+ <targetfile/>
149+ <fileset refid="gcc-files"/>
150+ <compositemapper>
151+ <mapper type="glob" from="*.c" to="*.o"/>
152+ <mapper type="glob" from="*.m" to="*.o"/>
153+ </compositemapper>
154+ </apply>
155+ </target>
156+
157+ <!-- links the shared library based on the previously compiled object files -->
158+ <target name="link" depends="compile" if="has-compiler">
159+ <fileset dir="${buildDir}" id="objFileSet">
160+ <patternset>
161+ <include name="**/*.o" />
162+ </patternset>
163+ </fileset>
164+ <pathconvert pathsep=" " property="objFiles" refid="objFileSet" />
165+ <mkdir dir="${libsDir}" />
166+ <exec executable="${linker}" failonerror="true" dir="${buildDir}">
167+ <arg line="${linker-opts}" />
168+ <arg value="-o" />
169+ <arg path="${libsDir}/${libName}" />
170+ <arg line="${objFiles}"/>
171+ <arg line="${libraries}" />
172+ </exec>
173+ </target>
174+
175+ <!-- strips the shared library of debug symbols -->
176+ <target name="strip" depends="link" if="should-strip">
177+ <exec executable="${stripper}" failonerror="true" dir="${buildDir}">
178+ <arg value="--strip-unneeded"/>
179+ <arg path="${libsDir}/${libName}" />
180+ </exec>
181+ </target>
182+
183+ <target name="postcompile" depends="strip">
184+
185+ </target>
186+</project>
--- /dev/null
+++ b/extensions/gdx-bullet/jni/build-macosxarm64.xml
@@ -0,0 +1,186 @@
1+<project name="gdx-bullet-MacOsX-arm64" basedir="." default="postcompile">
2+ <!-- include the environment -->
3+ <property environment="env"/>
4+ <!-- output directory for temporary object files -->
5+ <property name="buildDir" value="target/macosxarm64" />
6+ <!-- output directory for the shared library -->
7+ <property name="libsDir" value="../libs/macosxarm64" />
8+ <!-- the name of the shared library -->
9+ <property name="libName" value="libgdx-bulletarm64.dylib"/>
10+ <!-- the jni header jniPlatform to use -->
11+ <property name="jniPlatform" value="mac"/>
12+ <!-- the compiler to use when compiling c files -->
13+ <property name="cCompiler" value="clang"/>
14+ <!-- the compiler to use when compiling c++ files -->
15+ <property name="cppCompiler" value="clang++"/>
16+ <!-- the command to use when archiving files -->
17+ <property name="archiver" value="ar"/>
18+ <!-- the compilerPrefix for the C & C++ compilers -->
19+ <property name="compilerPrefix" value=""/>
20+ <!-- the compilerSuffix for the C & C++ compilers -->
21+ <property name="compilerSuffix" value="" />
22+
23+ <!-- define gcc compiler, options and files to compile -->
24+ <property name="gcc" value="${compilerPrefix}${cCompiler}${compilerSuffix}"/>
25+ <property name="gcc-opts" value="-c -Wall -O2 -arch arm64 -DFIXED_POINT -fmessage-length=0 -fPIC -mmacosx-version-min=10.7 -stdlib=libc++"/>
26+ <fileset id="gcc-files" dir="./">
27+ <exclude name="target/"/>
28+ <include name="memcpy_wrap.c"/>
29+ <include name="**/*.c"/>
30+
31+ <exclude name="src/bullet/BulletMultiThreaded/GpuSoftBodySolvers/**"/>
32+
33+ </fileset>
34+
35+ <!-- define g++ compiler, options and files to compile -->
36+ <property name="g++" value="${compilerPrefix}${cppCompiler}${compilerSuffix}"/>
37+ <property name="g++-opts" value="-c -Wall -O2 -arch arm64 -DFIXED_POINT -fmessage-length=0 -fPIC -mmacosx-version-min=10.7 -stdlib=libc++ -fno-strict-aliasing -fno-rtti -DBT_NO_PROFILE -DBT_USE_INVERSE_DYNAMICS_WITH_BULLET2"/>
38+ <fileset id="g++-files" dir="./">
39+ <exclude name="target/"/>
40+ <include name="**/*.cpp"/>
41+
42+ <exclude name="src/bullet/BulletMultiThreaded/GpuSoftBodySolvers/**"/>
43+
44+ </fileset>
45+
46+ <!-- define linker and options -->
47+ <property name="linker" value="${compilerPrefix}${cppCompiler}${compilerSuffix}"/>
48+ <property name="linker-opts" value="-shared -arch arm64 -mmacosx-version-min=10.7 -stdlib=libc++"/>
49+ <property name="libraries" value=""/>
50+
51+ <!-- define stripper -->
52+ <property name="stripper" value="${compilerPrefix}strip${compilerSuffix}"/>
53+
54+ <!-- cleans the build directory, removes all object files and shared libs -->
55+ <target name="clean">
56+ <delete includeemptydirs="true" quiet="true">
57+ <fileset dir="${buildDir}"/>
58+ <fileset dir="${libsDir}" includes="**/*" excludes="**/.svn"/>
59+ </delete>
60+ </target>
61+
62+ <target name="precompile">
63+ <condition property="compiler-found">
64+ <and>
65+ <or>
66+ <!-- Include both b/c Windows might be either -->
67+ <available file="${g++}" filepath="${env.PATH}"/>
68+ <available file="${g++}" filepath="${env.Path}"/>
69+ </or>
70+ <or>
71+ <!-- Include both b/c Windows might be either -->
72+ <available file="${gcc}" filepath="${env.PATH}"/>
73+ <available file="${gcc}" filepath="${env.Path}"/>
74+ </or>
75+ </and>
76+ </condition>
77+ <condition property="has-compiler">
78+ <equals arg1="${compiler-found}" arg2="true"/>
79+ </condition>
80+ <condition property="stripper-found">
81+ <or>
82+ <!-- Include both b/c Windows might be either -->
83+ <available file="${stripper}" filepath="${env.PATH}"/>
84+ <available file="${stripper}" filepath="${env.Path}"/>
85+ </or>
86+ </condition>
87+ <condition property="should-strip">
88+ <and>
89+ <equals arg1="${stripper-found}" arg2="true"/>
90+ <equals arg1="${release}" arg2="true"/>
91+ <!-- Don't strip mac osx libs -->
92+ <not>
93+ <contains string="${libName}" substring="dylib"/>
94+ </not>
95+ </and>
96+ </condition>
97+
98+ </target>
99+
100+ <target name="create-build-dir" depends="precompile" if="has-compiler">
101+ <!-- FIXME this is pretty nasty :/ -->
102+ <copy todir="${buildDir}">
103+ <fileset refid="g++-files"/>
104+ <fileset refid="gcc-files"/>
105+ </copy>
106+ <delete>
107+ <fileset dir="${buildDir}">
108+ <include name="*"/>
109+ <exclude name="*.o"/>
110+ </fileset>
111+ </delete>
112+ </target>
113+
114+ <!-- compiles all C and C++ files to object files in the build directory -->
115+ <target name="compile" depends="create-build-dir" if="has-compiler">
116+ <mkdir dir="${buildDir}"/>
117+ <apply failonerror="true" executable="${g++}" dest="${buildDir}" verbose="true">
118+ <arg line="${g++-opts}"/>
119+ <arg value="-Ijni-headers"/>
120+ <arg value="-Ijni-headers/${jniPlatform}"/>
121+ <arg value="-I."/>
122+ <arg value="-Isrc/bullet/"/>
123+ <arg value="-Isrc/custom/"/>
124+ <arg value="-Isrc/extras/Serialize/"/>
125+ <arg value="-Isrc/extras/"/>
126+
127+ <srcfile/>
128+ <arg value="-o"/>
129+ <targetfile/>
130+ <fileset refid="g++-files"/>
131+ <compositemapper>
132+ <mapper type="glob" from="*.cpp" to="*.o"/>
133+ <mapper type="glob" from="*.mm" to="*.o"/>
134+ </compositemapper>
135+ </apply>
136+ <apply failonerror="true" executable="${gcc}" dest="${buildDir}" verbose="true">
137+ <arg line="${gcc-opts}"/>
138+ <arg value="-Ijni-headers"/>
139+ <arg value="-Ijni-headers/${jniPlatform}"/>
140+ <arg value="-I."/>
141+ <arg value="-Isrc/bullet/"/>
142+ <arg value="-Isrc/custom/"/>
143+ <arg value="-Isrc/extras/Serialize/"/>
144+ <arg value="-Isrc/extras/"/>
145+
146+ <srcfile/>
147+ <arg value="-o"/>
148+ <targetfile/>
149+ <fileset refid="gcc-files"/>
150+ <compositemapper>
151+ <mapper type="glob" from="*.c" to="*.o"/>
152+ <mapper type="glob" from="*.m" to="*.o"/>
153+ </compositemapper>
154+ </apply>
155+ </target>
156+
157+ <!-- links the shared library based on the previously compiled object files -->
158+ <target name="link" depends="compile" if="has-compiler">
159+ <fileset dir="${buildDir}" id="objFileSet">
160+ <patternset>
161+ <include name="**/*.o" />
162+ </patternset>
163+ </fileset>
164+ <pathconvert pathsep=" " property="objFiles" refid="objFileSet" />
165+ <mkdir dir="${libsDir}" />
166+ <exec executable="${linker}" failonerror="true" dir="${buildDir}">
167+ <arg line="${linker-opts}" />
168+ <arg value="-o" />
169+ <arg path="${libsDir}/${libName}" />
170+ <arg line="${objFiles}"/>
171+ <arg line="${libraries}" />
172+ </exec>
173+ </target>
174+
175+ <!-- strips the shared library of debug symbols -->
176+ <target name="strip" depends="link" if="should-strip">
177+ <exec executable="${stripper}" failonerror="true" dir="${buildDir}">
178+ <arg value="--strip-unneeded"/>
179+ <arg path="${libsDir}/${libName}" />
180+ </exec>
181+ </target>
182+
183+ <target name="postcompile" depends="strip">
184+
185+ </target>
186+</project>
--- /dev/null
+++ b/extensions/gdx-bullet/jni/build-windows32.xml
@@ -0,0 +1,186 @@
1+<project name="gdx-bullet-Windows-32" basedir="." default="postcompile">
2+ <!-- include the environment -->
3+ <property environment="env"/>
4+ <!-- output directory for temporary object files -->
5+ <property name="buildDir" value="target/windows32" />
6+ <!-- output directory for the shared library -->
7+ <property name="libsDir" value="../libs/windows32" />
8+ <!-- the name of the shared library -->
9+ <property name="libName" value="gdx-bullet.dll"/>
10+ <!-- the jni header jniPlatform to use -->
11+ <property name="jniPlatform" value="win32"/>
12+ <!-- the compiler to use when compiling c files -->
13+ <property name="cCompiler" value="gcc"/>
14+ <!-- the compiler to use when compiling c++ files -->
15+ <property name="cppCompiler" value="g++"/>
16+ <!-- the command to use when archiving files -->
17+ <property name="archiver" value="ar"/>
18+ <!-- the compilerPrefix for the C & C++ compilers -->
19+ <property name="compilerPrefix" value="i686-w64-mingw32-"/>
20+ <!-- the compilerSuffix for the C & C++ compilers -->
21+ <property name="compilerSuffix" value="" />
22+
23+ <!-- define gcc compiler, options and files to compile -->
24+ <property name="gcc" value="${compilerPrefix}${cCompiler}${compilerSuffix}"/>
25+ <property name="gcc-opts" value="-c -Wall -O2 -mfpmath=sse -msse2 -fmessage-length=0 -m32"/>
26+ <fileset id="gcc-files" dir="./">
27+ <exclude name="target/"/>
28+ <include name="memcpy_wrap.c"/>
29+ <include name="**/*.c"/>
30+
31+ <exclude name="src/bullet/BulletMultiThreaded/GpuSoftBodySolvers/**"/>
32+
33+ </fileset>
34+
35+ <!-- define g++ compiler, options and files to compile -->
36+ <property name="g++" value="${compilerPrefix}${cppCompiler}${compilerSuffix}"/>
37+ <property name="g++-opts" value="-c -Wall -O2 -mfpmath=sse -msse2 -fmessage-length=0 -m32 -fno-strict-aliasing -fno-rtti -DBT_NO_PROFILE -DBT_USE_INVERSE_DYNAMICS_WITH_BULLET2"/>
38+ <fileset id="g++-files" dir="./">
39+ <exclude name="target/"/>
40+ <include name="**/*.cpp"/>
41+
42+ <exclude name="src/bullet/BulletMultiThreaded/GpuSoftBodySolvers/**"/>
43+
44+ </fileset>
45+
46+ <!-- define linker and options -->
47+ <property name="linker" value="${compilerPrefix}${cppCompiler}${compilerSuffix}"/>
48+ <property name="linker-opts" value="-Wl,--kill-at -shared -m32 -static -static-libgcc -static-libstdc++"/>
49+ <property name="libraries" value=""/>
50+
51+ <!-- define stripper -->
52+ <property name="stripper" value="${compilerPrefix}strip${compilerSuffix}"/>
53+
54+ <!-- cleans the build directory, removes all object files and shared libs -->
55+ <target name="clean">
56+ <delete includeemptydirs="true" quiet="true">
57+ <fileset dir="${buildDir}"/>
58+ <fileset dir="${libsDir}" includes="**/*" excludes="**/.svn"/>
59+ </delete>
60+ </target>
61+
62+ <target name="precompile">
63+ <condition property="compiler-found">
64+ <and>
65+ <or>
66+ <!-- Include both b/c Windows might be either -->
67+ <available file="${g++}" filepath="${env.PATH}"/>
68+ <available file="${g++}" filepath="${env.Path}"/>
69+ </or>
70+ <or>
71+ <!-- Include both b/c Windows might be either -->
72+ <available file="${gcc}" filepath="${env.PATH}"/>
73+ <available file="${gcc}" filepath="${env.Path}"/>
74+ </or>
75+ </and>
76+ </condition>
77+ <condition property="has-compiler">
78+ <equals arg1="${compiler-found}" arg2="true"/>
79+ </condition>
80+ <condition property="stripper-found">
81+ <or>
82+ <!-- Include both b/c Windows might be either -->
83+ <available file="${stripper}" filepath="${env.PATH}"/>
84+ <available file="${stripper}" filepath="${env.Path}"/>
85+ </or>
86+ </condition>
87+ <condition property="should-strip">
88+ <and>
89+ <equals arg1="${stripper-found}" arg2="true"/>
90+ <equals arg1="${release}" arg2="true"/>
91+ <!-- Don't strip mac osx libs -->
92+ <not>
93+ <contains string="${libName}" substring="dylib"/>
94+ </not>
95+ </and>
96+ </condition>
97+
98+ </target>
99+
100+ <target name="create-build-dir" depends="precompile" if="has-compiler">
101+ <!-- FIXME this is pretty nasty :/ -->
102+ <copy todir="${buildDir}">
103+ <fileset refid="g++-files"/>
104+ <fileset refid="gcc-files"/>
105+ </copy>
106+ <delete>
107+ <fileset dir="${buildDir}">
108+ <include name="*"/>
109+ <exclude name="*.o"/>
110+ </fileset>
111+ </delete>
112+ </target>
113+
114+ <!-- compiles all C and C++ files to object files in the build directory -->
115+ <target name="compile" depends="create-build-dir" if="has-compiler">
116+ <mkdir dir="${buildDir}"/>
117+ <apply failonerror="true" executable="${g++}" dest="${buildDir}" verbose="true">
118+ <arg line="${g++-opts}"/>
119+ <arg value="-Ijni-headers"/>
120+ <arg value="-Ijni-headers/${jniPlatform}"/>
121+ <arg value="-I."/>
122+ <arg value="-Isrc/bullet/"/>
123+ <arg value="-Isrc/custom/"/>
124+ <arg value="-Isrc/extras/Serialize/"/>
125+ <arg value="-Isrc/extras/"/>
126+
127+ <srcfile/>
128+ <arg value="-o"/>
129+ <targetfile/>
130+ <fileset refid="g++-files"/>
131+ <compositemapper>
132+ <mapper type="glob" from="*.cpp" to="*.o"/>
133+ <mapper type="glob" from="*.mm" to="*.o"/>
134+ </compositemapper>
135+ </apply>
136+ <apply failonerror="true" executable="${gcc}" dest="${buildDir}" verbose="true">
137+ <arg line="${gcc-opts}"/>
138+ <arg value="-Ijni-headers"/>
139+ <arg value="-Ijni-headers/${jniPlatform}"/>
140+ <arg value="-I."/>
141+ <arg value="-Isrc/bullet/"/>
142+ <arg value="-Isrc/custom/"/>
143+ <arg value="-Isrc/extras/Serialize/"/>
144+ <arg value="-Isrc/extras/"/>
145+
146+ <srcfile/>
147+ <arg value="-o"/>
148+ <targetfile/>
149+ <fileset refid="gcc-files"/>
150+ <compositemapper>
151+ <mapper type="glob" from="*.c" to="*.o"/>
152+ <mapper type="glob" from="*.m" to="*.o"/>
153+ </compositemapper>
154+ </apply>
155+ </target>
156+
157+ <!-- links the shared library based on the previously compiled object files -->
158+ <target name="link" depends="compile" if="has-compiler">
159+ <fileset dir="${buildDir}" id="objFileSet">
160+ <patternset>
161+ <include name="**/*.o" />
162+ </patternset>
163+ </fileset>
164+ <pathconvert pathsep=" " property="objFiles" refid="objFileSet" />
165+ <mkdir dir="${libsDir}" />
166+ <exec executable="${linker}" failonerror="true" dir="${buildDir}">
167+ <arg line="${linker-opts}" />
168+ <arg value="-o" />
169+ <arg path="${libsDir}/${libName}" />
170+ <arg line="${objFiles}"/>
171+ <arg line="${libraries}" />
172+ </exec>
173+ </target>
174+
175+ <!-- strips the shared library of debug symbols -->
176+ <target name="strip" depends="link" if="should-strip">
177+ <exec executable="${stripper}" failonerror="true" dir="${buildDir}">
178+ <arg value="--strip-unneeded"/>
179+ <arg path="${libsDir}/${libName}" />
180+ </exec>
181+ </target>
182+
183+ <target name="postcompile" depends="strip">
184+
185+ </target>
186+</project>
--- /dev/null
+++ b/extensions/gdx-bullet/jni/build-windows64.xml
@@ -0,0 +1,186 @@
1+<project name="gdx-bullet-Windows-64" basedir="." default="postcompile">
2+ <!-- include the environment -->
3+ <property environment="env"/>
4+ <!-- output directory for temporary object files -->
5+ <property name="buildDir" value="target/windows64" />
6+ <!-- output directory for the shared library -->
7+ <property name="libsDir" value="../libs/windows64" />
8+ <!-- the name of the shared library -->
9+ <property name="libName" value="gdx-bullet64.dll"/>
10+ <!-- the jni header jniPlatform to use -->
11+ <property name="jniPlatform" value="win32"/>
12+ <!-- the compiler to use when compiling c files -->
13+ <property name="cCompiler" value="gcc"/>
14+ <!-- the compiler to use when compiling c++ files -->
15+ <property name="cppCompiler" value="g++"/>
16+ <!-- the command to use when archiving files -->
17+ <property name="archiver" value="ar"/>
18+ <!-- the compilerPrefix for the C & C++ compilers -->
19+ <property name="compilerPrefix" value="x86_64-w64-mingw32-"/>
20+ <!-- the compilerSuffix for the C & C++ compilers -->
21+ <property name="compilerSuffix" value="" />
22+
23+ <!-- define gcc compiler, options and files to compile -->
24+ <property name="gcc" value="${compilerPrefix}${cCompiler}${compilerSuffix}"/>
25+ <property name="gcc-opts" value="-c -Wall -O2 -mfpmath=sse -msse2 -fmessage-length=0 -m64"/>
26+ <fileset id="gcc-files" dir="./">
27+ <exclude name="target/"/>
28+ <include name="memcpy_wrap.c"/>
29+ <include name="**/*.c"/>
30+
31+ <exclude name="src/bullet/BulletMultiThreaded/GpuSoftBodySolvers/**"/>
32+
33+ </fileset>
34+
35+ <!-- define g++ compiler, options and files to compile -->
36+ <property name="g++" value="${compilerPrefix}${cppCompiler}${compilerSuffix}"/>
37+ <property name="g++-opts" value="-c -Wall -O2 -mfpmath=sse -msse2 -fmessage-length=0 -m64 -fno-strict-aliasing -fno-rtti -DBT_NO_PROFILE -DBT_USE_INVERSE_DYNAMICS_WITH_BULLET2"/>
38+ <fileset id="g++-files" dir="./">
39+ <exclude name="target/"/>
40+ <include name="**/*.cpp"/>
41+
42+ <exclude name="src/bullet/BulletMultiThreaded/GpuSoftBodySolvers/**"/>
43+
44+ </fileset>
45+
46+ <!-- define linker and options -->
47+ <property name="linker" value="${compilerPrefix}${cppCompiler}${compilerSuffix}"/>
48+ <property name="linker-opts" value="-Wl,--kill-at -shared -static -static-libgcc -static-libstdc++ -m64"/>
49+ <property name="libraries" value=""/>
50+
51+ <!-- define stripper -->
52+ <property name="stripper" value="${compilerPrefix}strip${compilerSuffix}"/>
53+
54+ <!-- cleans the build directory, removes all object files and shared libs -->
55+ <target name="clean">
56+ <delete includeemptydirs="true" quiet="true">
57+ <fileset dir="${buildDir}"/>
58+ <fileset dir="${libsDir}" includes="**/*" excludes="**/.svn"/>
59+ </delete>
60+ </target>
61+
62+ <target name="precompile">
63+ <condition property="compiler-found">
64+ <and>
65+ <or>
66+ <!-- Include both b/c Windows might be either -->
67+ <available file="${g++}" filepath="${env.PATH}"/>
68+ <available file="${g++}" filepath="${env.Path}"/>
69+ </or>
70+ <or>
71+ <!-- Include both b/c Windows might be either -->
72+ <available file="${gcc}" filepath="${env.PATH}"/>
73+ <available file="${gcc}" filepath="${env.Path}"/>
74+ </or>
75+ </and>
76+ </condition>
77+ <condition property="has-compiler">
78+ <equals arg1="${compiler-found}" arg2="true"/>
79+ </condition>
80+ <condition property="stripper-found">
81+ <or>
82+ <!-- Include both b/c Windows might be either -->
83+ <available file="${stripper}" filepath="${env.PATH}"/>
84+ <available file="${stripper}" filepath="${env.Path}"/>
85+ </or>
86+ </condition>
87+ <condition property="should-strip">
88+ <and>
89+ <equals arg1="${stripper-found}" arg2="true"/>
90+ <equals arg1="${release}" arg2="true"/>
91+ <!-- Don't strip mac osx libs -->
92+ <not>
93+ <contains string="${libName}" substring="dylib"/>
94+ </not>
95+ </and>
96+ </condition>
97+
98+ </target>
99+
100+ <target name="create-build-dir" depends="precompile" if="has-compiler">
101+ <!-- FIXME this is pretty nasty :/ -->
102+ <copy todir="${buildDir}">
103+ <fileset refid="g++-files"/>
104+ <fileset refid="gcc-files"/>
105+ </copy>
106+ <delete>
107+ <fileset dir="${buildDir}">
108+ <include name="*"/>
109+ <exclude name="*.o"/>
110+ </fileset>
111+ </delete>
112+ </target>
113+
114+ <!-- compiles all C and C++ files to object files in the build directory -->
115+ <target name="compile" depends="create-build-dir" if="has-compiler">
116+ <mkdir dir="${buildDir}"/>
117+ <apply failonerror="true" executable="${g++}" dest="${buildDir}" verbose="true">
118+ <arg line="${g++-opts}"/>
119+ <arg value="-Ijni-headers"/>
120+ <arg value="-Ijni-headers/${jniPlatform}"/>
121+ <arg value="-I."/>
122+ <arg value="-Isrc/bullet/"/>
123+ <arg value="-Isrc/custom/"/>
124+ <arg value="-Isrc/extras/Serialize/"/>
125+ <arg value="-Isrc/extras/"/>
126+
127+ <srcfile/>
128+ <arg value="-o"/>
129+ <targetfile/>
130+ <fileset refid="g++-files"/>
131+ <compositemapper>
132+ <mapper type="glob" from="*.cpp" to="*.o"/>
133+ <mapper type="glob" from="*.mm" to="*.o"/>
134+ </compositemapper>
135+ </apply>
136+ <apply failonerror="true" executable="${gcc}" dest="${buildDir}" verbose="true">
137+ <arg line="${gcc-opts}"/>
138+ <arg value="-Ijni-headers"/>
139+ <arg value="-Ijni-headers/${jniPlatform}"/>
140+ <arg value="-I."/>
141+ <arg value="-Isrc/bullet/"/>
142+ <arg value="-Isrc/custom/"/>
143+ <arg value="-Isrc/extras/Serialize/"/>
144+ <arg value="-Isrc/extras/"/>
145+
146+ <srcfile/>
147+ <arg value="-o"/>
148+ <targetfile/>
149+ <fileset refid="gcc-files"/>
150+ <compositemapper>
151+ <mapper type="glob" from="*.c" to="*.o"/>
152+ <mapper type="glob" from="*.m" to="*.o"/>
153+ </compositemapper>
154+ </apply>
155+ </target>
156+
157+ <!-- links the shared library based on the previously compiled object files -->
158+ <target name="link" depends="compile" if="has-compiler">
159+ <fileset dir="${buildDir}" id="objFileSet">
160+ <patternset>
161+ <include name="**/*.o" />
162+ </patternset>
163+ </fileset>
164+ <pathconvert pathsep=" " property="objFiles" refid="objFileSet" />
165+ <mkdir dir="${libsDir}" />
166+ <exec executable="${linker}" failonerror="true" dir="${buildDir}">
167+ <arg line="${linker-opts}" />
168+ <arg value="-o" />
169+ <arg path="${libsDir}/${libName}" />
170+ <arg line="${objFiles}"/>
171+ <arg line="${libraries}" />
172+ </exec>
173+ </target>
174+
175+ <!-- strips the shared library of debug symbols -->
176+ <target name="strip" depends="link" if="should-strip">
177+ <exec executable="${stripper}" failonerror="true" dir="${buildDir}">
178+ <arg value="--strip-unneeded"/>
179+ <arg path="${libsDir}/${libName}" />
180+ </exec>
181+ </target>
182+
183+ <target name="postcompile" depends="strip">
184+
185+ </target>
186+</project>
--- /dev/null
+++ b/extensions/gdx-bullet/jni/build.xml
@@ -0,0 +1,36 @@
1+<project name="gdx-bullet-natives" basedir="." default="all">
2+ <target name="clean">
3+ <ant antfile="build-windows32.xml" target="clean"/>
4+ <ant antfile="build-windows64.xml" target="clean"/>
5+ <ant antfile="build-linux64.xml" target="clean"/>
6+ <ant antfile="build-linuxarm32.xml" target="clean"/>
7+ <ant antfile="build-linuxarm64.xml" target="clean"/>
8+ <ant antfile="build-android32.xml" target="clean"/>
9+
10+ </target>
11+
12+ <target name="compile-natives">
13+ <ant antfile="build-windows32.xml"/>
14+ <ant antfile="build-windows64.xml"/>
15+ <ant antfile="build-linux64.xml"/>
16+ <ant antfile="build-linuxarm32.xml"/>
17+ <ant antfile="build-linuxarm64.xml"/>
18+ <ant antfile="build-android32.xml"/>
19+
20+ </target>
21+
22+ <target name="pack-natives">
23+ <jar destfile="../libs/gdx-bullet-natives.jar">
24+ <fileset dir="../libs/windows32" includes="gdx-bullet.dll"/>
25+ <fileset dir="../libs/windows64" includes="gdx-bullet64.dll"/>
26+ <fileset dir="../libs/linux64" includes="libgdx-bullet64.so"/>
27+ <fileset dir="../libs/linuxarm32" includes="libgdx-bulletarm.so"/>
28+ <fileset dir="../libs/linuxarm64" includes="libgdx-bulletarm64.so"/>
29+ <fileset dir="../libs/macosx64" includes="libgdx-bullet64.dylib"/>
30+ <fileset dir="../libs/macosxarm64" includes="libgdx-bulletarm64.dylib"/>
31+
32+ </jar>
33+ </target>
34+
35+ <target name="all" depends="compile-natives,pack-natives"/>
36+</project>
--- /dev/null
+++ b/extensions/gdx-bullet/jni/jni-headers/classfile_constants.h
@@ -0,0 +1,582 @@
1+/*
2+ * Copyright (c) 2004, 2017, Oracle and/or its affiliates. All rights reserved.
3+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4+ *
5+ * This code is free software; you can redistribute it and/or modify it
6+ * under the terms of the GNU General Public License version 2 only, as
7+ * published by the Free Software Foundation. Oracle designates this
8+ * particular file as subject to the "Classpath" exception as provided
9+ * by Oracle in the LICENSE file that accompanied this code.
10+ *
11+ * This code is distributed in the hope that it will be useful, but WITHOUT
12+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14+ * version 2 for more details (a copy is included in the LICENSE file that
15+ * accompanied this code).
16+ *
17+ * You should have received a copy of the GNU General Public License version
18+ * 2 along with this work; if not, write to the Free Software Foundation,
19+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20+ *
21+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22+ * or visit www.oracle.com if you need additional information or have any
23+ * questions.
24+ */
25+
26+#ifndef CLASSFILE_CONSTANTS_H
27+#define CLASSFILE_CONSTANTS_H
28+
29+#ifdef __cplusplus
30+extern "C" {
31+#endif
32+
33+/* Classfile version number for this information */
34+#define JVM_CLASSFILE_MAJOR_VERSION 55
35+#define JVM_CLASSFILE_MINOR_VERSION 0
36+
37+/* Flags */
38+
39+enum {
40+ JVM_ACC_PUBLIC = 0x0001,
41+ JVM_ACC_PRIVATE = 0x0002,
42+ JVM_ACC_PROTECTED = 0x0004,
43+ JVM_ACC_STATIC = 0x0008,
44+ JVM_ACC_FINAL = 0x0010,
45+ JVM_ACC_SYNCHRONIZED = 0x0020,
46+ JVM_ACC_SUPER = 0x0020,
47+ JVM_ACC_VOLATILE = 0x0040,
48+ JVM_ACC_BRIDGE = 0x0040,
49+ JVM_ACC_TRANSIENT = 0x0080,
50+ JVM_ACC_VARARGS = 0x0080,
51+ JVM_ACC_NATIVE = 0x0100,
52+ JVM_ACC_INTERFACE = 0x0200,
53+ JVM_ACC_ABSTRACT = 0x0400,
54+ JVM_ACC_STRICT = 0x0800,
55+ JVM_ACC_SYNTHETIC = 0x1000,
56+ JVM_ACC_ANNOTATION = 0x2000,
57+ JVM_ACC_ENUM = 0x4000,
58+ JVM_ACC_MODULE = 0x8000
59+};
60+
61+#define JVM_ACC_PUBLIC_BIT 0
62+#define JVM_ACC_PRIVATE_BIT 1
63+#define JVM_ACC_PROTECTED_BIT 2
64+#define JVM_ACC_STATIC_BIT 3
65+#define JVM_ACC_FINAL_BIT 4
66+#define JVM_ACC_SYNCHRONIZED_BIT 5
67+#define JVM_ACC_SUPER_BIT 5
68+#define JVM_ACC_VOLATILE_BIT 6
69+#define JVM_ACC_BRIDGE_BIT 6
70+#define JVM_ACC_TRANSIENT_BIT 7
71+#define JVM_ACC_VARARGS_BIT 7
72+#define JVM_ACC_NATIVE_BIT 8
73+#define JVM_ACC_INTERFACE_BIT 9
74+#define JVM_ACC_ABSTRACT_BIT 10
75+#define JVM_ACC_STRICT_BIT 11
76+#define JVM_ACC_SYNTHETIC_BIT 12
77+#define JVM_ACC_ANNOTATION_BIT 13
78+#define JVM_ACC_ENUM_BIT 14
79+
80+/* Used in newarray instruction. */
81+
82+enum {
83+ JVM_T_BOOLEAN = 4,
84+ JVM_T_CHAR = 5,
85+ JVM_T_FLOAT = 6,
86+ JVM_T_DOUBLE = 7,
87+ JVM_T_BYTE = 8,
88+ JVM_T_SHORT = 9,
89+ JVM_T_INT = 10,
90+ JVM_T_LONG = 11
91+};
92+
93+/* Constant Pool Entries */
94+
95+enum {
96+ JVM_CONSTANT_Utf8 = 1,
97+ JVM_CONSTANT_Unicode = 2, /* unused */
98+ JVM_CONSTANT_Integer = 3,
99+ JVM_CONSTANT_Float = 4,
100+ JVM_CONSTANT_Long = 5,
101+ JVM_CONSTANT_Double = 6,
102+ JVM_CONSTANT_Class = 7,
103+ JVM_CONSTANT_String = 8,
104+ JVM_CONSTANT_Fieldref = 9,
105+ JVM_CONSTANT_Methodref = 10,
106+ JVM_CONSTANT_InterfaceMethodref = 11,
107+ JVM_CONSTANT_NameAndType = 12,
108+ JVM_CONSTANT_MethodHandle = 15, // JSR 292
109+ JVM_CONSTANT_MethodType = 16, // JSR 292
110+ JVM_CONSTANT_Dynamic = 17,
111+ JVM_CONSTANT_InvokeDynamic = 18,
112+ JVM_CONSTANT_ExternalMax = 18
113+};
114+
115+/* JVM_CONSTANT_MethodHandle subtypes */
116+enum {
117+ JVM_REF_getField = 1,
118+ JVM_REF_getStatic = 2,
119+ JVM_REF_putField = 3,
120+ JVM_REF_putStatic = 4,
121+ JVM_REF_invokeVirtual = 5,
122+ JVM_REF_invokeStatic = 6,
123+ JVM_REF_invokeSpecial = 7,
124+ JVM_REF_newInvokeSpecial = 8,
125+ JVM_REF_invokeInterface = 9
126+};
127+
128+/* StackMapTable type item numbers */
129+
130+enum {
131+ JVM_ITEM_Top = 0,
132+ JVM_ITEM_Integer = 1,
133+ JVM_ITEM_Float = 2,
134+ JVM_ITEM_Double = 3,
135+ JVM_ITEM_Long = 4,
136+ JVM_ITEM_Null = 5,
137+ JVM_ITEM_UninitializedThis = 6,
138+ JVM_ITEM_Object = 7,
139+ JVM_ITEM_Uninitialized = 8
140+};
141+
142+/* Type signatures */
143+
144+enum {
145+ JVM_SIGNATURE_ARRAY = '[',
146+ JVM_SIGNATURE_BYTE = 'B',
147+ JVM_SIGNATURE_CHAR = 'C',
148+ JVM_SIGNATURE_CLASS = 'L',
149+ JVM_SIGNATURE_ENDCLASS = ';',
150+ JVM_SIGNATURE_ENUM = 'E',
151+ JVM_SIGNATURE_FLOAT = 'F',
152+ JVM_SIGNATURE_DOUBLE = 'D',
153+ JVM_SIGNATURE_FUNC = '(',
154+ JVM_SIGNATURE_ENDFUNC = ')',
155+ JVM_SIGNATURE_INT = 'I',
156+ JVM_SIGNATURE_LONG = 'J',
157+ JVM_SIGNATURE_SHORT = 'S',
158+ JVM_SIGNATURE_VOID = 'V',
159+ JVM_SIGNATURE_BOOLEAN = 'Z'
160+};
161+
162+/* Opcodes */
163+
164+enum {
165+ JVM_OPC_nop = 0,
166+ JVM_OPC_aconst_null = 1,
167+ JVM_OPC_iconst_m1 = 2,
168+ JVM_OPC_iconst_0 = 3,
169+ JVM_OPC_iconst_1 = 4,
170+ JVM_OPC_iconst_2 = 5,
171+ JVM_OPC_iconst_3 = 6,
172+ JVM_OPC_iconst_4 = 7,
173+ JVM_OPC_iconst_5 = 8,
174+ JVM_OPC_lconst_0 = 9,
175+ JVM_OPC_lconst_1 = 10,
176+ JVM_OPC_fconst_0 = 11,
177+ JVM_OPC_fconst_1 = 12,
178+ JVM_OPC_fconst_2 = 13,
179+ JVM_OPC_dconst_0 = 14,
180+ JVM_OPC_dconst_1 = 15,
181+ JVM_OPC_bipush = 16,
182+ JVM_OPC_sipush = 17,
183+ JVM_OPC_ldc = 18,
184+ JVM_OPC_ldc_w = 19,
185+ JVM_OPC_ldc2_w = 20,
186+ JVM_OPC_iload = 21,
187+ JVM_OPC_lload = 22,
188+ JVM_OPC_fload = 23,
189+ JVM_OPC_dload = 24,
190+ JVM_OPC_aload = 25,
191+ JVM_OPC_iload_0 = 26,
192+ JVM_OPC_iload_1 = 27,
193+ JVM_OPC_iload_2 = 28,
194+ JVM_OPC_iload_3 = 29,
195+ JVM_OPC_lload_0 = 30,
196+ JVM_OPC_lload_1 = 31,
197+ JVM_OPC_lload_2 = 32,
198+ JVM_OPC_lload_3 = 33,
199+ JVM_OPC_fload_0 = 34,
200+ JVM_OPC_fload_1 = 35,
201+ JVM_OPC_fload_2 = 36,
202+ JVM_OPC_fload_3 = 37,
203+ JVM_OPC_dload_0 = 38,
204+ JVM_OPC_dload_1 = 39,
205+ JVM_OPC_dload_2 = 40,
206+ JVM_OPC_dload_3 = 41,
207+ JVM_OPC_aload_0 = 42,
208+ JVM_OPC_aload_1 = 43,
209+ JVM_OPC_aload_2 = 44,
210+ JVM_OPC_aload_3 = 45,
211+ JVM_OPC_iaload = 46,
212+ JVM_OPC_laload = 47,
213+ JVM_OPC_faload = 48,
214+ JVM_OPC_daload = 49,
215+ JVM_OPC_aaload = 50,
216+ JVM_OPC_baload = 51,
217+ JVM_OPC_caload = 52,
218+ JVM_OPC_saload = 53,
219+ JVM_OPC_istore = 54,
220+ JVM_OPC_lstore = 55,
221+ JVM_OPC_fstore = 56,
222+ JVM_OPC_dstore = 57,
223+ JVM_OPC_astore = 58,
224+ JVM_OPC_istore_0 = 59,
225+ JVM_OPC_istore_1 = 60,
226+ JVM_OPC_istore_2 = 61,
227+ JVM_OPC_istore_3 = 62,
228+ JVM_OPC_lstore_0 = 63,
229+ JVM_OPC_lstore_1 = 64,
230+ JVM_OPC_lstore_2 = 65,
231+ JVM_OPC_lstore_3 = 66,
232+ JVM_OPC_fstore_0 = 67,
233+ JVM_OPC_fstore_1 = 68,
234+ JVM_OPC_fstore_2 = 69,
235+ JVM_OPC_fstore_3 = 70,
236+ JVM_OPC_dstore_0 = 71,
237+ JVM_OPC_dstore_1 = 72,
238+ JVM_OPC_dstore_2 = 73,
239+ JVM_OPC_dstore_3 = 74,
240+ JVM_OPC_astore_0 = 75,
241+ JVM_OPC_astore_1 = 76,
242+ JVM_OPC_astore_2 = 77,
243+ JVM_OPC_astore_3 = 78,
244+ JVM_OPC_iastore = 79,
245+ JVM_OPC_lastore = 80,
246+ JVM_OPC_fastore = 81,
247+ JVM_OPC_dastore = 82,
248+ JVM_OPC_aastore = 83,
249+ JVM_OPC_bastore = 84,
250+ JVM_OPC_castore = 85,
251+ JVM_OPC_sastore = 86,
252+ JVM_OPC_pop = 87,
253+ JVM_OPC_pop2 = 88,
254+ JVM_OPC_dup = 89,
255+ JVM_OPC_dup_x1 = 90,
256+ JVM_OPC_dup_x2 = 91,
257+ JVM_OPC_dup2 = 92,
258+ JVM_OPC_dup2_x1 = 93,
259+ JVM_OPC_dup2_x2 = 94,
260+ JVM_OPC_swap = 95,
261+ JVM_OPC_iadd = 96,
262+ JVM_OPC_ladd = 97,
263+ JVM_OPC_fadd = 98,
264+ JVM_OPC_dadd = 99,
265+ JVM_OPC_isub = 100,
266+ JVM_OPC_lsub = 101,
267+ JVM_OPC_fsub = 102,
268+ JVM_OPC_dsub = 103,
269+ JVM_OPC_imul = 104,
270+ JVM_OPC_lmul = 105,
271+ JVM_OPC_fmul = 106,
272+ JVM_OPC_dmul = 107,
273+ JVM_OPC_idiv = 108,
274+ JVM_OPC_ldiv = 109,
275+ JVM_OPC_fdiv = 110,
276+ JVM_OPC_ddiv = 111,
277+ JVM_OPC_irem = 112,
278+ JVM_OPC_lrem = 113,
279+ JVM_OPC_frem = 114,
280+ JVM_OPC_drem = 115,
281+ JVM_OPC_ineg = 116,
282+ JVM_OPC_lneg = 117,
283+ JVM_OPC_fneg = 118,
284+ JVM_OPC_dneg = 119,
285+ JVM_OPC_ishl = 120,
286+ JVM_OPC_lshl = 121,
287+ JVM_OPC_ishr = 122,
288+ JVM_OPC_lshr = 123,
289+ JVM_OPC_iushr = 124,
290+ JVM_OPC_lushr = 125,
291+ JVM_OPC_iand = 126,
292+ JVM_OPC_land = 127,
293+ JVM_OPC_ior = 128,
294+ JVM_OPC_lor = 129,
295+ JVM_OPC_ixor = 130,
296+ JVM_OPC_lxor = 131,
297+ JVM_OPC_iinc = 132,
298+ JVM_OPC_i2l = 133,
299+ JVM_OPC_i2f = 134,
300+ JVM_OPC_i2d = 135,
301+ JVM_OPC_l2i = 136,
302+ JVM_OPC_l2f = 137,
303+ JVM_OPC_l2d = 138,
304+ JVM_OPC_f2i = 139,
305+ JVM_OPC_f2l = 140,
306+ JVM_OPC_f2d = 141,
307+ JVM_OPC_d2i = 142,
308+ JVM_OPC_d2l = 143,
309+ JVM_OPC_d2f = 144,
310+ JVM_OPC_i2b = 145,
311+ JVM_OPC_i2c = 146,
312+ JVM_OPC_i2s = 147,
313+ JVM_OPC_lcmp = 148,
314+ JVM_OPC_fcmpl = 149,
315+ JVM_OPC_fcmpg = 150,
316+ JVM_OPC_dcmpl = 151,
317+ JVM_OPC_dcmpg = 152,
318+ JVM_OPC_ifeq = 153,
319+ JVM_OPC_ifne = 154,
320+ JVM_OPC_iflt = 155,
321+ JVM_OPC_ifge = 156,
322+ JVM_OPC_ifgt = 157,
323+ JVM_OPC_ifle = 158,
324+ JVM_OPC_if_icmpeq = 159,
325+ JVM_OPC_if_icmpne = 160,
326+ JVM_OPC_if_icmplt = 161,
327+ JVM_OPC_if_icmpge = 162,
328+ JVM_OPC_if_icmpgt = 163,
329+ JVM_OPC_if_icmple = 164,
330+ JVM_OPC_if_acmpeq = 165,
331+ JVM_OPC_if_acmpne = 166,
332+ JVM_OPC_goto = 167,
333+ JVM_OPC_jsr = 168,
334+ JVM_OPC_ret = 169,
335+ JVM_OPC_tableswitch = 170,
336+ JVM_OPC_lookupswitch = 171,
337+ JVM_OPC_ireturn = 172,
338+ JVM_OPC_lreturn = 173,
339+ JVM_OPC_freturn = 174,
340+ JVM_OPC_dreturn = 175,
341+ JVM_OPC_areturn = 176,
342+ JVM_OPC_return = 177,
343+ JVM_OPC_getstatic = 178,
344+ JVM_OPC_putstatic = 179,
345+ JVM_OPC_getfield = 180,
346+ JVM_OPC_putfield = 181,
347+ JVM_OPC_invokevirtual = 182,
348+ JVM_OPC_invokespecial = 183,
349+ JVM_OPC_invokestatic = 184,
350+ JVM_OPC_invokeinterface = 185,
351+ JVM_OPC_invokedynamic = 186,
352+ JVM_OPC_new = 187,
353+ JVM_OPC_newarray = 188,
354+ JVM_OPC_anewarray = 189,
355+ JVM_OPC_arraylength = 190,
356+ JVM_OPC_athrow = 191,
357+ JVM_OPC_checkcast = 192,
358+ JVM_OPC_instanceof = 193,
359+ JVM_OPC_monitorenter = 194,
360+ JVM_OPC_monitorexit = 195,
361+ JVM_OPC_wide = 196,
362+ JVM_OPC_multianewarray = 197,
363+ JVM_OPC_ifnull = 198,
364+ JVM_OPC_ifnonnull = 199,
365+ JVM_OPC_goto_w = 200,
366+ JVM_OPC_jsr_w = 201,
367+ JVM_OPC_MAX = 201
368+};
369+
370+/* Opcode length initializer, use with something like:
371+ * unsigned char opcode_length[JVM_OPC_MAX+1] = JVM_OPCODE_LENGTH_INITIALIZER;
372+ */
373+#define JVM_OPCODE_LENGTH_INITIALIZER { \
374+ 1, /* nop */ \
375+ 1, /* aconst_null */ \
376+ 1, /* iconst_m1 */ \
377+ 1, /* iconst_0 */ \
378+ 1, /* iconst_1 */ \
379+ 1, /* iconst_2 */ \
380+ 1, /* iconst_3 */ \
381+ 1, /* iconst_4 */ \
382+ 1, /* iconst_5 */ \
383+ 1, /* lconst_0 */ \
384+ 1, /* lconst_1 */ \
385+ 1, /* fconst_0 */ \
386+ 1, /* fconst_1 */ \
387+ 1, /* fconst_2 */ \
388+ 1, /* dconst_0 */ \
389+ 1, /* dconst_1 */ \
390+ 2, /* bipush */ \
391+ 3, /* sipush */ \
392+ 2, /* ldc */ \
393+ 3, /* ldc_w */ \
394+ 3, /* ldc2_w */ \
395+ 2, /* iload */ \
396+ 2, /* lload */ \
397+ 2, /* fload */ \
398+ 2, /* dload */ \
399+ 2, /* aload */ \
400+ 1, /* iload_0 */ \
401+ 1, /* iload_1 */ \
402+ 1, /* iload_2 */ \
403+ 1, /* iload_3 */ \
404+ 1, /* lload_0 */ \
405+ 1, /* lload_1 */ \
406+ 1, /* lload_2 */ \
407+ 1, /* lload_3 */ \
408+ 1, /* fload_0 */ \
409+ 1, /* fload_1 */ \
410+ 1, /* fload_2 */ \
411+ 1, /* fload_3 */ \
412+ 1, /* dload_0 */ \
413+ 1, /* dload_1 */ \
414+ 1, /* dload_2 */ \
415+ 1, /* dload_3 */ \
416+ 1, /* aload_0 */ \
417+ 1, /* aload_1 */ \
418+ 1, /* aload_2 */ \
419+ 1, /* aload_3 */ \
420+ 1, /* iaload */ \
421+ 1, /* laload */ \
422+ 1, /* faload */ \
423+ 1, /* daload */ \
424+ 1, /* aaload */ \
425+ 1, /* baload */ \
426+ 1, /* caload */ \
427+ 1, /* saload */ \
428+ 2, /* istore */ \
429+ 2, /* lstore */ \
430+ 2, /* fstore */ \
431+ 2, /* dstore */ \
432+ 2, /* astore */ \
433+ 1, /* istore_0 */ \
434+ 1, /* istore_1 */ \
435+ 1, /* istore_2 */ \
436+ 1, /* istore_3 */ \
437+ 1, /* lstore_0 */ \
438+ 1, /* lstore_1 */ \
439+ 1, /* lstore_2 */ \
440+ 1, /* lstore_3 */ \
441+ 1, /* fstore_0 */ \
442+ 1, /* fstore_1 */ \
443+ 1, /* fstore_2 */ \
444+ 1, /* fstore_3 */ \
445+ 1, /* dstore_0 */ \
446+ 1, /* dstore_1 */ \
447+ 1, /* dstore_2 */ \
448+ 1, /* dstore_3 */ \
449+ 1, /* astore_0 */ \
450+ 1, /* astore_1 */ \
451+ 1, /* astore_2 */ \
452+ 1, /* astore_3 */ \
453+ 1, /* iastore */ \
454+ 1, /* lastore */ \
455+ 1, /* fastore */ \
456+ 1, /* dastore */ \
457+ 1, /* aastore */ \
458+ 1, /* bastore */ \
459+ 1, /* castore */ \
460+ 1, /* sastore */ \
461+ 1, /* pop */ \
462+ 1, /* pop2 */ \
463+ 1, /* dup */ \
464+ 1, /* dup_x1 */ \
465+ 1, /* dup_x2 */ \
466+ 1, /* dup2 */ \
467+ 1, /* dup2_x1 */ \
468+ 1, /* dup2_x2 */ \
469+ 1, /* swap */ \
470+ 1, /* iadd */ \
471+ 1, /* ladd */ \
472+ 1, /* fadd */ \
473+ 1, /* dadd */ \
474+ 1, /* isub */ \
475+ 1, /* lsub */ \
476+ 1, /* fsub */ \
477+ 1, /* dsub */ \
478+ 1, /* imul */ \
479+ 1, /* lmul */ \
480+ 1, /* fmul */ \
481+ 1, /* dmul */ \
482+ 1, /* idiv */ \
483+ 1, /* ldiv */ \
484+ 1, /* fdiv */ \
485+ 1, /* ddiv */ \
486+ 1, /* irem */ \
487+ 1, /* lrem */ \
488+ 1, /* frem */ \
489+ 1, /* drem */ \
490+ 1, /* ineg */ \
491+ 1, /* lneg */ \
492+ 1, /* fneg */ \
493+ 1, /* dneg */ \
494+ 1, /* ishl */ \
495+ 1, /* lshl */ \
496+ 1, /* ishr */ \
497+ 1, /* lshr */ \
498+ 1, /* iushr */ \
499+ 1, /* lushr */ \
500+ 1, /* iand */ \
501+ 1, /* land */ \
502+ 1, /* ior */ \
503+ 1, /* lor */ \
504+ 1, /* ixor */ \
505+ 1, /* lxor */ \
506+ 3, /* iinc */ \
507+ 1, /* i2l */ \
508+ 1, /* i2f */ \
509+ 1, /* i2d */ \
510+ 1, /* l2i */ \
511+ 1, /* l2f */ \
512+ 1, /* l2d */ \
513+ 1, /* f2i */ \
514+ 1, /* f2l */ \
515+ 1, /* f2d */ \
516+ 1, /* d2i */ \
517+ 1, /* d2l */ \
518+ 1, /* d2f */ \
519+ 1, /* i2b */ \
520+ 1, /* i2c */ \
521+ 1, /* i2s */ \
522+ 1, /* lcmp */ \
523+ 1, /* fcmpl */ \
524+ 1, /* fcmpg */ \
525+ 1, /* dcmpl */ \
526+ 1, /* dcmpg */ \
527+ 3, /* ifeq */ \
528+ 3, /* ifne */ \
529+ 3, /* iflt */ \
530+ 3, /* ifge */ \
531+ 3, /* ifgt */ \
532+ 3, /* ifle */ \
533+ 3, /* if_icmpeq */ \
534+ 3, /* if_icmpne */ \
535+ 3, /* if_icmplt */ \
536+ 3, /* if_icmpge */ \
537+ 3, /* if_icmpgt */ \
538+ 3, /* if_icmple */ \
539+ 3, /* if_acmpeq */ \
540+ 3, /* if_acmpne */ \
541+ 3, /* goto */ \
542+ 3, /* jsr */ \
543+ 2, /* ret */ \
544+ 99, /* tableswitch */ \
545+ 99, /* lookupswitch */ \
546+ 1, /* ireturn */ \
547+ 1, /* lreturn */ \
548+ 1, /* freturn */ \
549+ 1, /* dreturn */ \
550+ 1, /* areturn */ \
551+ 1, /* return */ \
552+ 3, /* getstatic */ \
553+ 3, /* putstatic */ \
554+ 3, /* getfield */ \
555+ 3, /* putfield */ \
556+ 3, /* invokevirtual */ \
557+ 3, /* invokespecial */ \
558+ 3, /* invokestatic */ \
559+ 5, /* invokeinterface */ \
560+ 5, /* invokedynamic */ \
561+ 3, /* new */ \
562+ 2, /* newarray */ \
563+ 3, /* anewarray */ \
564+ 1, /* arraylength */ \
565+ 1, /* athrow */ \
566+ 3, /* checkcast */ \
567+ 3, /* instanceof */ \
568+ 1, /* monitorenter */ \
569+ 1, /* monitorexit */ \
570+ 0, /* wide */ \
571+ 4, /* multianewarray */ \
572+ 3, /* ifnull */ \
573+ 3, /* ifnonnull */ \
574+ 5, /* goto_w */ \
575+ 5 /* jsr_w */ \
576+}
577+
578+#ifdef __cplusplus
579+} /* extern "C" */
580+#endif /* __cplusplus */
581+
582+#endif /* CLASSFILE_CONSTANTS */
--- /dev/null
+++ b/extensions/gdx-bullet/jni/jni-headers/jawt.h
@@ -0,0 +1,356 @@
1+/*
2+ * Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
3+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4+ *
5+ * This code is free software; you can redistribute it and/or modify it
6+ * under the terms of the GNU General Public License version 2 only, as
7+ * published by the Free Software Foundation. Oracle designates this
8+ * particular file as subject to the "Classpath" exception as provided
9+ * by Oracle in the LICENSE file that accompanied this code.
10+ *
11+ * This code is distributed in the hope that it will be useful, but WITHOUT
12+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14+ * version 2 for more details (a copy is included in the LICENSE file that
15+ * accompanied this code).
16+ *
17+ * You should have received a copy of the GNU General Public License version
18+ * 2 along with this work; if not, write to the Free Software Foundation,
19+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20+ *
21+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22+ * or visit www.oracle.com if you need additional information or have any
23+ * questions.
24+ */
25+
26+#ifndef _JAVASOFT_JAWT_H_
27+#define _JAVASOFT_JAWT_H_
28+
29+#include "jni.h"
30+
31+#ifdef __cplusplus
32+extern "C" {
33+#endif
34+
35+/*
36+ * AWT native interface.
37+ *
38+ * The AWT native interface allows a native C or C++ application a means
39+ * by which to access native structures in AWT. This is to facilitate moving
40+ * legacy C and C++ applications to Java and to target the needs of the
41+ * developers who need to do their own native rendering to canvases
42+ * for performance or other reasons.
43+ *
44+ * Conversely it also provides mechanisms for an application which already
45+ * has a native window to provide that to AWT for AWT rendering.
46+ *
47+ * Since every platform may be different in its native data structures
48+ * and APIs for windowing systems the application must necessarily
49+ * provided per-platform source and compile and deliver per-platform
50+ * native code to use this API.
51+ *
52+ * These interfaces are not part of the Java SE specification and
53+ * a VM is not required to implement this API. However it is strongly
54+ * recommended that all implementations which support headful AWT
55+ * also support these interfaces.
56+ *
57+ */
58+
59+/*
60+ * AWT Native Drawing Surface (JAWT_DrawingSurface).
61+ *
62+ * For each platform, there is a native drawing surface structure. This
63+ * platform-specific structure can be found in jawt_md.h. It is recommended
64+ * that additional platforms follow the same model. It is also recommended
65+ * that VMs on all platforms support the existing structures in jawt_md.h.
66+ *
67+ *******************
68+ * EXAMPLE OF USAGE:
69+ *******************
70+ *
71+ * In Win32, a programmer wishes to access the HWND of a canvas to perform
72+ * native rendering into it. The programmer has declared the paint() method
73+ * for their canvas subclass to be native:
74+ *
75+ *
76+ * MyCanvas.java:
77+ *
78+ * import java.awt.*;
79+ *
80+ * public class MyCanvas extends Canvas {
81+ *
82+ * static {
83+ * System.loadLibrary("mylib");
84+ * }
85+ *
86+ * public native void paint(Graphics g);
87+ * }
88+ *
89+ *
90+ * myfile.c:
91+ *
92+ * #include "jawt_md.h"
93+ * #include <assert.h>
94+ *
95+ * JNIEXPORT void JNICALL
96+ * Java_MyCanvas_paint(JNIEnv* env, jobject canvas, jobject graphics)
97+ * {
98+ * JAWT awt;
99+ * JAWT_DrawingSurface* ds;
100+ * JAWT_DrawingSurfaceInfo* dsi;
101+ * JAWT_Win32DrawingSurfaceInfo* dsi_win;
102+ * jboolean result;
103+ * jint lock;
104+ *
105+ * // Get the AWT. Request version 9 to access features in that release.
106+ * awt.version = JAWT_VERSION_9;
107+ * result = JAWT_GetAWT(env, &awt);
108+ * assert(result != JNI_FALSE);
109+ *
110+ * // Get the drawing surface
111+ * ds = awt.GetDrawingSurface(env, canvas);
112+ * assert(ds != NULL);
113+ *
114+ * // Lock the drawing surface
115+ * lock = ds->Lock(ds);
116+ * assert((lock & JAWT_LOCK_ERROR) == 0);
117+ *
118+ * // Get the drawing surface info
119+ * dsi = ds->GetDrawingSurfaceInfo(ds);
120+ *
121+ * // Get the platform-specific drawing info
122+ * dsi_win = (JAWT_Win32DrawingSurfaceInfo*)dsi->platformInfo;
123+ *
124+ * //////////////////////////////
125+ * // !!! DO PAINTING HERE !!! //
126+ * //////////////////////////////
127+ *
128+ * // Free the drawing surface info
129+ * ds->FreeDrawingSurfaceInfo(dsi);
130+ *
131+ * // Unlock the drawing surface
132+ * ds->Unlock(ds);
133+ *
134+ * // Free the drawing surface
135+ * awt.FreeDrawingSurface(ds);
136+ * }
137+ *
138+ */
139+
140+/*
141+ * JAWT_Rectangle
142+ * Structure for a native rectangle.
143+ */
144+typedef struct jawt_Rectangle {
145+ jint x;
146+ jint y;
147+ jint width;
148+ jint height;
149+} JAWT_Rectangle;
150+
151+struct jawt_DrawingSurface;
152+
153+/*
154+ * JAWT_DrawingSurfaceInfo
155+ * Structure for containing the underlying drawing information of a component.
156+ */
157+typedef struct jawt_DrawingSurfaceInfo {
158+ /*
159+ * Pointer to the platform-specific information. This can be safely
160+ * cast to a JAWT_Win32DrawingSurfaceInfo on Windows or a
161+ * JAWT_X11DrawingSurfaceInfo on Linux and Solaris. On Mac OS X this is a
162+ * pointer to a NSObject that conforms to the JAWT_SurfaceLayers
163+ * protocol. See jawt_md.h for details.
164+ */
165+ void* platformInfo;
166+ /* Cached pointer to the underlying drawing surface */
167+ struct jawt_DrawingSurface* ds;
168+ /* Bounding rectangle of the drawing surface */
169+ JAWT_Rectangle bounds;
170+ /* Number of rectangles in the clip */
171+ jint clipSize;
172+ /* Clip rectangle array */
173+ JAWT_Rectangle* clip;
174+} JAWT_DrawingSurfaceInfo;
175+
176+#define JAWT_LOCK_ERROR 0x00000001
177+#define JAWT_LOCK_CLIP_CHANGED 0x00000002
178+#define JAWT_LOCK_BOUNDS_CHANGED 0x00000004
179+#define JAWT_LOCK_SURFACE_CHANGED 0x00000008
180+
181+/*
182+ * JAWT_DrawingSurface
183+ * Structure for containing the underlying drawing information of a component.
184+ * All operations on a JAWT_DrawingSurface MUST be performed from the same
185+ * thread as the call to GetDrawingSurface.
186+ */
187+typedef struct jawt_DrawingSurface {
188+ /*
189+ * Cached reference to the Java environment of the calling thread.
190+ * If Lock(), Unlock(), GetDrawingSurfaceInfo() or
191+ * FreeDrawingSurfaceInfo() are called from a different thread,
192+ * this data member should be set before calling those functions.
193+ */
194+ JNIEnv* env;
195+ /* Cached reference to the target object */
196+ jobject target;
197+ /*
198+ * Lock the surface of the target component for native rendering.
199+ * When finished drawing, the surface must be unlocked with
200+ * Unlock(). This function returns a bitmask with one or more of the
201+ * following values:
202+ *
203+ * JAWT_LOCK_ERROR - When an error has occurred and the surface could not
204+ * be locked.
205+ *
206+ * JAWT_LOCK_CLIP_CHANGED - When the clip region has changed.
207+ *
208+ * JAWT_LOCK_BOUNDS_CHANGED - When the bounds of the surface have changed.
209+ *
210+ * JAWT_LOCK_SURFACE_CHANGED - When the surface itself has changed
211+ */
212+ jint (JNICALL *Lock)
213+ (struct jawt_DrawingSurface* ds);
214+ /*
215+ * Get the drawing surface info.
216+ * The value returned may be cached, but the values may change if
217+ * additional calls to Lock() or Unlock() are made.
218+ * Lock() must be called before this can return a valid value.
219+ * Returns NULL if an error has occurred.
220+ * When finished with the returned value, FreeDrawingSurfaceInfo must be
221+ * called.
222+ */
223+ JAWT_DrawingSurfaceInfo* (JNICALL *GetDrawingSurfaceInfo)
224+ (struct jawt_DrawingSurface* ds);
225+ /*
226+ * Free the drawing surface info.
227+ */
228+ void (JNICALL *FreeDrawingSurfaceInfo)
229+ (JAWT_DrawingSurfaceInfo* dsi);
230+ /*
231+ * Unlock the drawing surface of the target component for native rendering.
232+ */
233+ void (JNICALL *Unlock)
234+ (struct jawt_DrawingSurface* ds);
235+} JAWT_DrawingSurface;
236+
237+/*
238+ * JAWT
239+ * Structure for containing native AWT functions.
240+ */
241+typedef struct jawt {
242+ /*
243+ * Version of this structure. This must always be set before
244+ * calling JAWT_GetAWT(). It affects the functions returned.
245+ * Must be one of the known pre-defined versions.
246+ */
247+ jint version;
248+ /*
249+ * Return a drawing surface from a target jobject. This value
250+ * may be cached.
251+ * Returns NULL if an error has occurred.
252+ * Target must be a java.awt.Component (should be a Canvas
253+ * or Window for native rendering).
254+ * FreeDrawingSurface() must be called when finished with the
255+ * returned JAWT_DrawingSurface.
256+ */
257+ JAWT_DrawingSurface* (JNICALL *GetDrawingSurface)
258+ (JNIEnv* env, jobject target);
259+ /*
260+ * Free the drawing surface allocated in GetDrawingSurface.
261+ */
262+ void (JNICALL *FreeDrawingSurface)
263+ (JAWT_DrawingSurface* ds);
264+ /*
265+ * Since 1.4
266+ * Locks the entire AWT for synchronization purposes
267+ */
268+ void (JNICALL *Lock)(JNIEnv* env);
269+ /*
270+ * Since 1.4
271+ * Unlocks the entire AWT for synchronization purposes
272+ */
273+ void (JNICALL *Unlock)(JNIEnv* env);
274+ /*
275+ * Since 1.4
276+ * Returns a reference to a java.awt.Component from a native
277+ * platform handle. On Windows, this corresponds to an HWND;
278+ * on Solaris and Linux, this is a Drawable. For other platforms,
279+ * see the appropriate machine-dependent header file for a description.
280+ * The reference returned by this function is a local
281+ * reference that is only valid in this environment.
282+ * This function returns a NULL reference if no component could be
283+ * found with matching platform information.
284+ */
285+ jobject (JNICALL *GetComponent)(JNIEnv* env, void* platformInfo);
286+
287+ /**
288+ * Since 9
289+ * Creates a java.awt.Frame placed in a native container. Container is
290+ * referenced by the native platform handle. For example on Windows this
291+ * corresponds to an HWND. For other platforms, see the appropriate
292+ * machine-dependent header file for a description. The reference returned
293+ * by this function is a local reference that is only valid in this
294+ * environment. This function returns a NULL reference if no frame could be
295+ * created with matching platform information.
296+ */
297+ jobject (JNICALL *CreateEmbeddedFrame) (JNIEnv *env, void* platformInfo);
298+
299+ /**
300+ * Since 9
301+ * Moves and resizes the embedded frame. The new location of the top-left
302+ * corner is specified by x and y parameters relative to the native parent
303+ * component. The new size is specified by width and height.
304+ *
305+ * The embedded frame should be created by CreateEmbeddedFrame() method, or
306+ * this function will not have any effect.
307+ *
308+ * java.awt.Component.setLocation() and java.awt.Component.setBounds() for
309+ * EmbeddedFrame really don't move it within the native parent. These
310+ * methods always locate the embedded frame at (0, 0) for backward
311+ * compatibility. To allow moving embedded frames this method was
312+ * introduced, and it works just the same way as setLocation() and
313+ * setBounds() for usual, non-embedded components.
314+ *
315+ * Using usual get/setLocation() and get/setBounds() together with this new
316+ * method is not recommended.
317+ */
318+ void (JNICALL *SetBounds) (JNIEnv *env, jobject embeddedFrame,
319+ jint x, jint y, jint w, jint h);
320+ /**
321+ * Since 9
322+ * Synthesize a native message to activate or deactivate an EmbeddedFrame
323+ * window depending on the value of parameter doActivate, if "true"
324+ * activates the window; otherwise, deactivates the window.
325+ *
326+ * The embedded frame should be created by CreateEmbeddedFrame() method, or
327+ * this function will not have any effect.
328+ */
329+ void (JNICALL *SynthesizeWindowActivation) (JNIEnv *env,
330+ jobject embeddedFrame, jboolean doActivate);
331+} JAWT;
332+
333+/*
334+ * Get the AWT native structure. This function returns JNI_FALSE if
335+ * an error occurs.
336+ */
337+_JNI_IMPORT_OR_EXPORT_
338+jboolean JNICALL JAWT_GetAWT(JNIEnv* env, JAWT* awt);
339+
340+/*
341+ * Specify one of these constants as the JAWT.version
342+ * Specifying an earlier version will limit the available functions to
343+ * those provided in that earlier version of JAWT.
344+ * See the "Since" note on each API. Methods with no "Since"
345+ * may be presumed to be present in JAWT_VERSION_1_3.
346+ */
347+#define JAWT_VERSION_1_3 0x00010003
348+#define JAWT_VERSION_1_4 0x00010004
349+#define JAWT_VERSION_1_7 0x00010007
350+#define JAWT_VERSION_9 0x00090000
351+
352+#ifdef __cplusplus
353+} /* extern "C" */
354+#endif
355+
356+#endif /* !_JAVASOFT_JAWT_H_ */
--- /dev/null
+++ b/extensions/gdx-bullet/jni/jni-headers/jdwpTransport.h
@@ -0,0 +1,276 @@
1+/*
2+ * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
3+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4+ *
5+ * This code is free software; you can redistribute it and/or modify it
6+ * under the terms of the GNU General Public License version 2 only, as
7+ * published by the Free Software Foundation. Oracle designates this
8+ * particular file as subject to the "Classpath" exception as provided
9+ * by Oracle in the LICENSE file that accompanied this code.
10+ *
11+ * This code is distributed in the hope that it will be useful, but WITHOUT
12+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14+ * version 2 for more details (a copy is included in the LICENSE file that
15+ * accompanied this code).
16+ *
17+ * You should have received a copy of the GNU General Public License version
18+ * 2 along with this work; if not, write to the Free Software Foundation,
19+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20+ *
21+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22+ * or visit www.oracle.com if you need additional information or have any
23+ * questions.
24+ */
25+
26+/*
27+ * Java Debug Wire Protocol Transport Service Provider Interface.
28+ */
29+
30+#ifndef JDWPTRANSPORT_H
31+#define JDWPTRANSPORT_H
32+
33+#include "jni.h"
34+
35+enum {
36+ JDWPTRANSPORT_VERSION_1_0 = 0x00010000,
37+ JDWPTRANSPORT_VERSION_1_1 = 0x00010001
38+};
39+
40+#ifdef __cplusplus
41+extern "C" {
42+#endif
43+
44+struct jdwpTransportNativeInterface_;
45+
46+struct _jdwpTransportEnv;
47+
48+#ifdef __cplusplus
49+typedef _jdwpTransportEnv jdwpTransportEnv;
50+#else
51+typedef const struct jdwpTransportNativeInterface_ *jdwpTransportEnv;
52+#endif /* __cplusplus */
53+
54+/*
55+ * Errors. Universal errors with JVMTI/JVMDI equivalents keep the
56+ * values the same.
57+ */
58+typedef enum {
59+ JDWPTRANSPORT_ERROR_NONE = 0,
60+ JDWPTRANSPORT_ERROR_ILLEGAL_ARGUMENT = 103,
61+ JDWPTRANSPORT_ERROR_OUT_OF_MEMORY = 110,
62+ JDWPTRANSPORT_ERROR_INTERNAL = 113,
63+ JDWPTRANSPORT_ERROR_ILLEGAL_STATE = 201,
64+ JDWPTRANSPORT_ERROR_IO_ERROR = 202,
65+ JDWPTRANSPORT_ERROR_TIMEOUT = 203,
66+ JDWPTRANSPORT_ERROR_MSG_NOT_AVAILABLE = 204
67+} jdwpTransportError;
68+
69+
70+/*
71+ * Structure to define capabilities
72+ */
73+typedef struct {
74+ unsigned int can_timeout_attach :1;
75+ unsigned int can_timeout_accept :1;
76+ unsigned int can_timeout_handshake :1;
77+ unsigned int reserved3 :1;
78+ unsigned int reserved4 :1;
79+ unsigned int reserved5 :1;
80+ unsigned int reserved6 :1;
81+ unsigned int reserved7 :1;
82+ unsigned int reserved8 :1;
83+ unsigned int reserved9 :1;
84+ unsigned int reserved10 :1;
85+ unsigned int reserved11 :1;
86+ unsigned int reserved12 :1;
87+ unsigned int reserved13 :1;
88+ unsigned int reserved14 :1;
89+ unsigned int reserved15 :1;
90+} JDWPTransportCapabilities;
91+
92+
93+/*
94+ * Structures to define packet layout.
95+ *
96+ * See: http://java.sun.com/j2se/1.5/docs/guide/jpda/jdwp-spec.html
97+ */
98+
99+#define JDWP_HEADER_SIZE 11
100+
101+enum {
102+ /*
103+ * If additional flags are added that apply to jdwpCmdPacket,
104+ * then debugLoop.c: reader() will need to be updated to
105+ * accept more than JDWPTRANSPORT_FLAGS_NONE.
106+ */
107+ JDWPTRANSPORT_FLAGS_NONE = 0x0,
108+ JDWPTRANSPORT_FLAGS_REPLY = 0x80
109+};
110+
111+typedef struct {
112+ jint len;
113+ jint id;
114+ jbyte flags;
115+ jbyte cmdSet;
116+ jbyte cmd;
117+ jbyte *data;
118+} jdwpCmdPacket;
119+
120+typedef struct {
121+ jint len;
122+ jint id;
123+ jbyte flags;
124+ jshort errorCode;
125+ jbyte *data;
126+} jdwpReplyPacket;
127+
128+typedef struct {
129+ union {
130+ jdwpCmdPacket cmd;
131+ jdwpReplyPacket reply;
132+ } type;
133+} jdwpPacket;
134+
135+/*
136+ * JDWP functions called by the transport.
137+ */
138+typedef struct jdwpTransportCallback {
139+ void *(*alloc)(jint numBytes); /* Call this for all allocations */
140+ void (*free)(void *buffer); /* Call this for all deallocations */
141+} jdwpTransportCallback;
142+
143+typedef jint (*jdwpTransport_OnLoad_t)(JavaVM *jvm,
144+ jdwpTransportCallback *callback,
145+ jint version,
146+ jdwpTransportEnv** env);
147+
148+/*
149+ * JDWP transport configuration from the agent.
150+ */
151+typedef struct jdwpTransportConfiguration {
152+ /* Field added in JDWPTRANSPORT_VERSION_1_1: */
153+ const char* allowed_peers; /* Peers allowed for connection */
154+} jdwpTransportConfiguration;
155+
156+
157+/* Function Interface */
158+
159+struct jdwpTransportNativeInterface_ {
160+ /* 1 : RESERVED */
161+ void *reserved1;
162+
163+ /* 2 : Get Capabilities */
164+ jdwpTransportError (JNICALL *GetCapabilities)(jdwpTransportEnv* env,
165+ JDWPTransportCapabilities *capabilities_ptr);
166+
167+ /* 3 : Attach */
168+ jdwpTransportError (JNICALL *Attach)(jdwpTransportEnv* env,
169+ const char* address,
170+ jlong attach_timeout,
171+ jlong handshake_timeout);
172+
173+ /* 4: StartListening */
174+ jdwpTransportError (JNICALL *StartListening)(jdwpTransportEnv* env,
175+ const char* address,
176+ char** actual_address);
177+
178+ /* 5: StopListening */
179+ jdwpTransportError (JNICALL *StopListening)(jdwpTransportEnv* env);
180+
181+ /* 6: Accept */
182+ jdwpTransportError (JNICALL *Accept)(jdwpTransportEnv* env,
183+ jlong accept_timeout,
184+ jlong handshake_timeout);
185+
186+ /* 7: IsOpen */
187+ jboolean (JNICALL *IsOpen)(jdwpTransportEnv* env);
188+
189+ /* 8: Close */
190+ jdwpTransportError (JNICALL *Close)(jdwpTransportEnv* env);
191+
192+ /* 9: ReadPacket */
193+ jdwpTransportError (JNICALL *ReadPacket)(jdwpTransportEnv* env,
194+ jdwpPacket *pkt);
195+
196+ /* 10: Write Packet */
197+ jdwpTransportError (JNICALL *WritePacket)(jdwpTransportEnv* env,
198+ const jdwpPacket* pkt);
199+
200+ /* 11: GetLastError */
201+ jdwpTransportError (JNICALL *GetLastError)(jdwpTransportEnv* env,
202+ char** error);
203+
204+ /* 12: SetTransportConfiguration added in JDWPTRANSPORT_VERSION_1_1 */
205+ jdwpTransportError (JNICALL *SetTransportConfiguration)(jdwpTransportEnv* env,
206+ jdwpTransportConfiguration *config);
207+};
208+
209+
210+/*
211+ * Use inlined functions so that C++ code can use syntax such as
212+ * env->Attach("mymachine:5000", 10*1000, 0);
213+ *
214+ * rather than using C's :-
215+ *
216+ * (*env)->Attach(env, "mymachine:5000", 10*1000, 0);
217+ */
218+struct _jdwpTransportEnv {
219+ const struct jdwpTransportNativeInterface_ *functions;
220+#ifdef __cplusplus
221+
222+ jdwpTransportError GetCapabilities(JDWPTransportCapabilities *capabilities_ptr) {
223+ return functions->GetCapabilities(this, capabilities_ptr);
224+ }
225+
226+ jdwpTransportError Attach(const char* address, jlong attach_timeout,
227+ jlong handshake_timeout) {
228+ return functions->Attach(this, address, attach_timeout, handshake_timeout);
229+ }
230+
231+ jdwpTransportError StartListening(const char* address,
232+ char** actual_address) {
233+ return functions->StartListening(this, address, actual_address);
234+ }
235+
236+ jdwpTransportError StopListening(void) {
237+ return functions->StopListening(this);
238+ }
239+
240+ jdwpTransportError Accept(jlong accept_timeout, jlong handshake_timeout) {
241+ return functions->Accept(this, accept_timeout, handshake_timeout);
242+ }
243+
244+ jboolean IsOpen(void) {
245+ return functions->IsOpen(this);
246+ }
247+
248+ jdwpTransportError Close(void) {
249+ return functions->Close(this);
250+ }
251+
252+ jdwpTransportError ReadPacket(jdwpPacket *pkt) {
253+ return functions->ReadPacket(this, pkt);
254+ }
255+
256+ jdwpTransportError WritePacket(const jdwpPacket* pkt) {
257+ return functions->WritePacket(this, pkt);
258+ }
259+
260+ jdwpTransportError GetLastError(char** error) {
261+ return functions->GetLastError(this, error);
262+ }
263+
264+ /* SetTransportConfiguration added in JDWPTRANSPORT_VERSION_1_1 */
265+ jdwpTransportError SetTransportConfiguration(jdwpTransportEnv* env,
266+ return functions->SetTransportConfiguration(this, config);
267+ }
268+
269+#endif /* __cplusplus */
270+};
271+
272+#ifdef __cplusplus
273+} /* extern "C" */
274+#endif /* __cplusplus */
275+
276+#endif /* JDWPTRANSPORT_H */
--- /dev/null
+++ b/extensions/gdx-bullet/jni/jni-headers/jni.h
@@ -0,0 +1,1973 @@
1+/*
2+ * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
3+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4+ *
5+ * This code is free software; you can redistribute it and/or modify it
6+ * under the terms of the GNU General Public License version 2 only, as
7+ * published by the Free Software Foundation. Oracle designates this
8+ * particular file as subject to the "Classpath" exception as provided
9+ * by Oracle in the LICENSE file that accompanied this code.
10+ *
11+ * This code is distributed in the hope that it will be useful, but WITHOUT
12+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14+ * version 2 for more details (a copy is included in the LICENSE file that
15+ * accompanied this code).
16+ *
17+ * You should have received a copy of the GNU General Public License version
18+ * 2 along with this work; if not, write to the Free Software Foundation,
19+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20+ *
21+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22+ * or visit www.oracle.com if you need additional information or have any
23+ * questions.
24+ */
25+
26+/*
27+ * We used part of Netscape's Java Runtime Interface (JRI) as the starting
28+ * point of our design and implementation.
29+ */
30+
31+/******************************************************************************
32+ * Java Runtime Interface
33+ * Copyright (c) 1996 Netscape Communications Corporation. All rights reserved.
34+ *****************************************************************************/
35+
36+#ifndef _JAVASOFT_JNI_H_
37+#define _JAVASOFT_JNI_H_
38+
39+#include <stdio.h>
40+#include <stdarg.h>
41+
42+/* jni_md.h contains the machine-dependent typedefs for jbyte, jint
43+ and jlong */
44+
45+#include "jni_md.h"
46+
47+#ifdef __cplusplus
48+extern "C" {
49+#endif
50+
51+/*
52+ * JNI Types
53+ */
54+
55+#ifndef JNI_TYPES_ALREADY_DEFINED_IN_JNI_MD_H
56+
57+typedef unsigned char jboolean;
58+typedef unsigned short jchar;
59+typedef short jshort;
60+typedef float jfloat;
61+typedef double jdouble;
62+
63+typedef jint jsize;
64+
65+#ifdef __cplusplus
66+
67+class _jobject {};
68+class _jclass : public _jobject {};
69+class _jthrowable : public _jobject {};
70+class _jstring : public _jobject {};
71+class _jarray : public _jobject {};
72+class _jbooleanArray : public _jarray {};
73+class _jbyteArray : public _jarray {};
74+class _jcharArray : public _jarray {};
75+class _jshortArray : public _jarray {};
76+class _jintArray : public _jarray {};
77+class _jlongArray : public _jarray {};
78+class _jfloatArray : public _jarray {};
79+class _jdoubleArray : public _jarray {};
80+class _jobjectArray : public _jarray {};
81+
82+typedef _jobject *jobject;
83+typedef _jclass *jclass;
84+typedef _jthrowable *jthrowable;
85+typedef _jstring *jstring;
86+typedef _jarray *jarray;
87+typedef _jbooleanArray *jbooleanArray;
88+typedef _jbyteArray *jbyteArray;
89+typedef _jcharArray *jcharArray;
90+typedef _jshortArray *jshortArray;
91+typedef _jintArray *jintArray;
92+typedef _jlongArray *jlongArray;
93+typedef _jfloatArray *jfloatArray;
94+typedef _jdoubleArray *jdoubleArray;
95+typedef _jobjectArray *jobjectArray;
96+
97+#else
98+
99+struct _jobject;
100+
101+typedef struct _jobject *jobject;
102+typedef jobject jclass;
103+typedef jobject jthrowable;
104+typedef jobject jstring;
105+typedef jobject jarray;
106+typedef jarray jbooleanArray;
107+typedef jarray jbyteArray;
108+typedef jarray jcharArray;
109+typedef jarray jshortArray;
110+typedef jarray jintArray;
111+typedef jarray jlongArray;
112+typedef jarray jfloatArray;
113+typedef jarray jdoubleArray;
114+typedef jarray jobjectArray;
115+
116+#endif
117+
118+typedef jobject jweak;
119+
120+typedef union jvalue {
121+ jboolean z;
122+ jbyte b;
123+ jchar c;
124+ jshort s;
125+ jint i;
126+ jlong j;
127+ jfloat f;
128+ jdouble d;
129+ jobject l;
130+} jvalue;
131+
132+struct _jfieldID;
133+typedef struct _jfieldID *jfieldID;
134+
135+struct _jmethodID;
136+typedef struct _jmethodID *jmethodID;
137+
138+/* Return values from jobjectRefType */
139+typedef enum _jobjectType {
140+ JNIInvalidRefType = 0,
141+ JNILocalRefType = 1,
142+ JNIGlobalRefType = 2,
143+ JNIWeakGlobalRefType = 3
144+} jobjectRefType;
145+
146+
147+#endif /* JNI_TYPES_ALREADY_DEFINED_IN_JNI_MD_H */
148+
149+/*
150+ * jboolean constants
151+ */
152+
153+#define JNI_FALSE 0
154+#define JNI_TRUE 1
155+
156+/*
157+ * possible return values for JNI functions.
158+ */
159+
160+#define JNI_OK 0 /* success */
161+#define JNI_ERR (-1) /* unknown error */
162+#define JNI_EDETACHED (-2) /* thread detached from the VM */
163+#define JNI_EVERSION (-3) /* JNI version error */
164+#define JNI_ENOMEM (-4) /* not enough memory */
165+#define JNI_EEXIST (-5) /* VM already created */
166+#define JNI_EINVAL (-6) /* invalid arguments */
167+
168+/*
169+ * used in ReleaseScalarArrayElements
170+ */
171+
172+#define JNI_COMMIT 1
173+#define JNI_ABORT 2
174+
175+/*
176+ * used in RegisterNatives to describe native method name, signature,
177+ * and function pointer.
178+ */
179+
180+typedef struct {
181+ char *name;
182+ char *signature;
183+ void *fnPtr;
184+} JNINativeMethod;
185+
186+/*
187+ * JNI Native Method Interface.
188+ */
189+
190+struct JNINativeInterface_;
191+
192+struct JNIEnv_;
193+
194+#ifdef __cplusplus
195+typedef JNIEnv_ JNIEnv;
196+#else
197+typedef const struct JNINativeInterface_ *JNIEnv;
198+#endif
199+
200+/*
201+ * JNI Invocation Interface.
202+ */
203+
204+struct JNIInvokeInterface_;
205+
206+struct JavaVM_;
207+
208+#ifdef __cplusplus
209+typedef JavaVM_ JavaVM;
210+#else
211+typedef const struct JNIInvokeInterface_ *JavaVM;
212+#endif
213+
214+struct JNINativeInterface_ {
215+ void *reserved0;
216+ void *reserved1;
217+ void *reserved2;
218+
219+ void *reserved3;
220+ jint (JNICALL *GetVersion)(JNIEnv *env);
221+
222+ jclass (JNICALL *DefineClass)
223+ (JNIEnv *env, const char *name, jobject loader, const jbyte *buf,
224+ jsize len);
225+ jclass (JNICALL *FindClass)
226+ (JNIEnv *env, const char *name);
227+
228+ jmethodID (JNICALL *FromReflectedMethod)
229+ (JNIEnv *env, jobject method);
230+ jfieldID (JNICALL *FromReflectedField)
231+ (JNIEnv *env, jobject field);
232+
233+ jobject (JNICALL *ToReflectedMethod)
234+ (JNIEnv *env, jclass cls, jmethodID methodID, jboolean isStatic);
235+
236+ jclass (JNICALL *GetSuperclass)
237+ (JNIEnv *env, jclass sub);
238+ jboolean (JNICALL *IsAssignableFrom)
239+ (JNIEnv *env, jclass sub, jclass sup);
240+
241+ jobject (JNICALL *ToReflectedField)
242+ (JNIEnv *env, jclass cls, jfieldID fieldID, jboolean isStatic);
243+
244+ jint (JNICALL *Throw)
245+ (JNIEnv *env, jthrowable obj);
246+ jint (JNICALL *ThrowNew)
247+ (JNIEnv *env, jclass clazz, const char *msg);
248+ jthrowable (JNICALL *ExceptionOccurred)
249+ (JNIEnv *env);
250+ void (JNICALL *ExceptionDescribe)
251+ (JNIEnv *env);
252+ void (JNICALL *ExceptionClear)
253+ (JNIEnv *env);
254+ void (JNICALL *FatalError)
255+ (JNIEnv *env, const char *msg);
256+
257+ jint (JNICALL *PushLocalFrame)
258+ (JNIEnv *env, jint capacity);
259+ jobject (JNICALL *PopLocalFrame)
260+ (JNIEnv *env, jobject result);
261+
262+ jobject (JNICALL *NewGlobalRef)
263+ (JNIEnv *env, jobject lobj);
264+ void (JNICALL *DeleteGlobalRef)
265+ (JNIEnv *env, jobject gref);
266+ void (JNICALL *DeleteLocalRef)
267+ (JNIEnv *env, jobject obj);
268+ jboolean (JNICALL *IsSameObject)
269+ (JNIEnv *env, jobject obj1, jobject obj2);
270+ jobject (JNICALL *NewLocalRef)
271+ (JNIEnv *env, jobject ref);
272+ jint (JNICALL *EnsureLocalCapacity)
273+ (JNIEnv *env, jint capacity);
274+
275+ jobject (JNICALL *AllocObject)
276+ (JNIEnv *env, jclass clazz);
277+ jobject (JNICALL *NewObject)
278+ (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
279+ jobject (JNICALL *NewObjectV)
280+ (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
281+ jobject (JNICALL *NewObjectA)
282+ (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
283+
284+ jclass (JNICALL *GetObjectClass)
285+ (JNIEnv *env, jobject obj);
286+ jboolean (JNICALL *IsInstanceOf)
287+ (JNIEnv *env, jobject obj, jclass clazz);
288+
289+ jmethodID (JNICALL *GetMethodID)
290+ (JNIEnv *env, jclass clazz, const char *name, const char *sig);
291+
292+ jobject (JNICALL *CallObjectMethod)
293+ (JNIEnv *env, jobject obj, jmethodID methodID, ...);
294+ jobject (JNICALL *CallObjectMethodV)
295+ (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
296+ jobject (JNICALL *CallObjectMethodA)
297+ (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args);
298+
299+ jboolean (JNICALL *CallBooleanMethod)
300+ (JNIEnv *env, jobject obj, jmethodID methodID, ...);
301+ jboolean (JNICALL *CallBooleanMethodV)
302+ (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
303+ jboolean (JNICALL *CallBooleanMethodA)
304+ (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args);
305+
306+ jbyte (JNICALL *CallByteMethod)
307+ (JNIEnv *env, jobject obj, jmethodID methodID, ...);
308+ jbyte (JNICALL *CallByteMethodV)
309+ (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
310+ jbyte (JNICALL *CallByteMethodA)
311+ (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);
312+
313+ jchar (JNICALL *CallCharMethod)
314+ (JNIEnv *env, jobject obj, jmethodID methodID, ...);
315+ jchar (JNICALL *CallCharMethodV)
316+ (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
317+ jchar (JNICALL *CallCharMethodA)
318+ (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);
319+
320+ jshort (JNICALL *CallShortMethod)
321+ (JNIEnv *env, jobject obj, jmethodID methodID, ...);
322+ jshort (JNICALL *CallShortMethodV)
323+ (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
324+ jshort (JNICALL *CallShortMethodA)
325+ (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);
326+
327+ jint (JNICALL *CallIntMethod)
328+ (JNIEnv *env, jobject obj, jmethodID methodID, ...);
329+ jint (JNICALL *CallIntMethodV)
330+ (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
331+ jint (JNICALL *CallIntMethodA)
332+ (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);
333+
334+ jlong (JNICALL *CallLongMethod)
335+ (JNIEnv *env, jobject obj, jmethodID methodID, ...);
336+ jlong (JNICALL *CallLongMethodV)
337+ (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
338+ jlong (JNICALL *CallLongMethodA)
339+ (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);
340+
341+ jfloat (JNICALL *CallFloatMethod)
342+ (JNIEnv *env, jobject obj, jmethodID methodID, ...);
343+ jfloat (JNICALL *CallFloatMethodV)
344+ (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
345+ jfloat (JNICALL *CallFloatMethodA)
346+ (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);
347+
348+ jdouble (JNICALL *CallDoubleMethod)
349+ (JNIEnv *env, jobject obj, jmethodID methodID, ...);
350+ jdouble (JNICALL *CallDoubleMethodV)
351+ (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
352+ jdouble (JNICALL *CallDoubleMethodA)
353+ (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args);
354+
355+ void (JNICALL *CallVoidMethod)
356+ (JNIEnv *env, jobject obj, jmethodID methodID, ...);
357+ void (JNICALL *CallVoidMethodV)
358+ (JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
359+ void (JNICALL *CallVoidMethodA)
360+ (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args);
361+
362+ jobject (JNICALL *CallNonvirtualObjectMethod)
363+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
364+ jobject (JNICALL *CallNonvirtualObjectMethodV)
365+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
366+ va_list args);
367+ jobject (JNICALL *CallNonvirtualObjectMethodA)
368+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
369+ const jvalue * args);
370+
371+ jboolean (JNICALL *CallNonvirtualBooleanMethod)
372+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
373+ jboolean (JNICALL *CallNonvirtualBooleanMethodV)
374+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
375+ va_list args);
376+ jboolean (JNICALL *CallNonvirtualBooleanMethodA)
377+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
378+ const jvalue * args);
379+
380+ jbyte (JNICALL *CallNonvirtualByteMethod)
381+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
382+ jbyte (JNICALL *CallNonvirtualByteMethodV)
383+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
384+ va_list args);
385+ jbyte (JNICALL *CallNonvirtualByteMethodA)
386+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
387+ const jvalue *args);
388+
389+ jchar (JNICALL *CallNonvirtualCharMethod)
390+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
391+ jchar (JNICALL *CallNonvirtualCharMethodV)
392+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
393+ va_list args);
394+ jchar (JNICALL *CallNonvirtualCharMethodA)
395+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
396+ const jvalue *args);
397+
398+ jshort (JNICALL *CallNonvirtualShortMethod)
399+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
400+ jshort (JNICALL *CallNonvirtualShortMethodV)
401+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
402+ va_list args);
403+ jshort (JNICALL *CallNonvirtualShortMethodA)
404+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
405+ const jvalue *args);
406+
407+ jint (JNICALL *CallNonvirtualIntMethod)
408+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
409+ jint (JNICALL *CallNonvirtualIntMethodV)
410+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
411+ va_list args);
412+ jint (JNICALL *CallNonvirtualIntMethodA)
413+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
414+ const jvalue *args);
415+
416+ jlong (JNICALL *CallNonvirtualLongMethod)
417+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
418+ jlong (JNICALL *CallNonvirtualLongMethodV)
419+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
420+ va_list args);
421+ jlong (JNICALL *CallNonvirtualLongMethodA)
422+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
423+ const jvalue *args);
424+
425+ jfloat (JNICALL *CallNonvirtualFloatMethod)
426+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
427+ jfloat (JNICALL *CallNonvirtualFloatMethodV)
428+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
429+ va_list args);
430+ jfloat (JNICALL *CallNonvirtualFloatMethodA)
431+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
432+ const jvalue *args);
433+
434+ jdouble (JNICALL *CallNonvirtualDoubleMethod)
435+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
436+ jdouble (JNICALL *CallNonvirtualDoubleMethodV)
437+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
438+ va_list args);
439+ jdouble (JNICALL *CallNonvirtualDoubleMethodA)
440+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
441+ const jvalue *args);
442+
443+ void (JNICALL *CallNonvirtualVoidMethod)
444+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...);
445+ void (JNICALL *CallNonvirtualVoidMethodV)
446+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
447+ va_list args);
448+ void (JNICALL *CallNonvirtualVoidMethodA)
449+ (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID,
450+ const jvalue * args);
451+
452+ jfieldID (JNICALL *GetFieldID)
453+ (JNIEnv *env, jclass clazz, const char *name, const char *sig);
454+
455+ jobject (JNICALL *GetObjectField)
456+ (JNIEnv *env, jobject obj, jfieldID fieldID);
457+ jboolean (JNICALL *GetBooleanField)
458+ (JNIEnv *env, jobject obj, jfieldID fieldID);
459+ jbyte (JNICALL *GetByteField)
460+ (JNIEnv *env, jobject obj, jfieldID fieldID);
461+ jchar (JNICALL *GetCharField)
462+ (JNIEnv *env, jobject obj, jfieldID fieldID);
463+ jshort (JNICALL *GetShortField)
464+ (JNIEnv *env, jobject obj, jfieldID fieldID);
465+ jint (JNICALL *GetIntField)
466+ (JNIEnv *env, jobject obj, jfieldID fieldID);
467+ jlong (JNICALL *GetLongField)
468+ (JNIEnv *env, jobject obj, jfieldID fieldID);
469+ jfloat (JNICALL *GetFloatField)
470+ (JNIEnv *env, jobject obj, jfieldID fieldID);
471+ jdouble (JNICALL *GetDoubleField)
472+ (JNIEnv *env, jobject obj, jfieldID fieldID);
473+
474+ void (JNICALL *SetObjectField)
475+ (JNIEnv *env, jobject obj, jfieldID fieldID, jobject val);
476+ void (JNICALL *SetBooleanField)
477+ (JNIEnv *env, jobject obj, jfieldID fieldID, jboolean val);
478+ void (JNICALL *SetByteField)
479+ (JNIEnv *env, jobject obj, jfieldID fieldID, jbyte val);
480+ void (JNICALL *SetCharField)
481+ (JNIEnv *env, jobject obj, jfieldID fieldID, jchar val);
482+ void (JNICALL *SetShortField)
483+ (JNIEnv *env, jobject obj, jfieldID fieldID, jshort val);
484+ void (JNICALL *SetIntField)
485+ (JNIEnv *env, jobject obj, jfieldID fieldID, jint val);
486+ void (JNICALL *SetLongField)
487+ (JNIEnv *env, jobject obj, jfieldID fieldID, jlong val);
488+ void (JNICALL *SetFloatField)
489+ (JNIEnv *env, jobject obj, jfieldID fieldID, jfloat val);
490+ void (JNICALL *SetDoubleField)
491+ (JNIEnv *env, jobject obj, jfieldID fieldID, jdouble val);
492+
493+ jmethodID (JNICALL *GetStaticMethodID)
494+ (JNIEnv *env, jclass clazz, const char *name, const char *sig);
495+
496+ jobject (JNICALL *CallStaticObjectMethod)
497+ (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
498+ jobject (JNICALL *CallStaticObjectMethodV)
499+ (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
500+ jobject (JNICALL *CallStaticObjectMethodA)
501+ (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
502+
503+ jboolean (JNICALL *CallStaticBooleanMethod)
504+ (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
505+ jboolean (JNICALL *CallStaticBooleanMethodV)
506+ (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
507+ jboolean (JNICALL *CallStaticBooleanMethodA)
508+ (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
509+
510+ jbyte (JNICALL *CallStaticByteMethod)
511+ (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
512+ jbyte (JNICALL *CallStaticByteMethodV)
513+ (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
514+ jbyte (JNICALL *CallStaticByteMethodA)
515+ (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
516+
517+ jchar (JNICALL *CallStaticCharMethod)
518+ (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
519+ jchar (JNICALL *CallStaticCharMethodV)
520+ (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
521+ jchar (JNICALL *CallStaticCharMethodA)
522+ (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
523+
524+ jshort (JNICALL *CallStaticShortMethod)
525+ (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
526+ jshort (JNICALL *CallStaticShortMethodV)
527+ (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
528+ jshort (JNICALL *CallStaticShortMethodA)
529+ (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
530+
531+ jint (JNICALL *CallStaticIntMethod)
532+ (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
533+ jint (JNICALL *CallStaticIntMethodV)
534+ (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
535+ jint (JNICALL *CallStaticIntMethodA)
536+ (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
537+
538+ jlong (JNICALL *CallStaticLongMethod)
539+ (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
540+ jlong (JNICALL *CallStaticLongMethodV)
541+ (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
542+ jlong (JNICALL *CallStaticLongMethodA)
543+ (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
544+
545+ jfloat (JNICALL *CallStaticFloatMethod)
546+ (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
547+ jfloat (JNICALL *CallStaticFloatMethodV)
548+ (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
549+ jfloat (JNICALL *CallStaticFloatMethodA)
550+ (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
551+
552+ jdouble (JNICALL *CallStaticDoubleMethod)
553+ (JNIEnv *env, jclass clazz, jmethodID methodID, ...);
554+ jdouble (JNICALL *CallStaticDoubleMethodV)
555+ (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args);
556+ jdouble (JNICALL *CallStaticDoubleMethodA)
557+ (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args);
558+
559+ void (JNICALL *CallStaticVoidMethod)
560+ (JNIEnv *env, jclass cls, jmethodID methodID, ...);
561+ void (JNICALL *CallStaticVoidMethodV)
562+ (JNIEnv *env, jclass cls, jmethodID methodID, va_list args);
563+ void (JNICALL *CallStaticVoidMethodA)
564+ (JNIEnv *env, jclass cls, jmethodID methodID, const jvalue * args);
565+
566+ jfieldID (JNICALL *GetStaticFieldID)
567+ (JNIEnv *env, jclass clazz, const char *name, const char *sig);
568+ jobject (JNICALL *GetStaticObjectField)
569+ (JNIEnv *env, jclass clazz, jfieldID fieldID);
570+ jboolean (JNICALL *GetStaticBooleanField)
571+ (JNIEnv *env, jclass clazz, jfieldID fieldID);
572+ jbyte (JNICALL *GetStaticByteField)
573+ (JNIEnv *env, jclass clazz, jfieldID fieldID);
574+ jchar (JNICALL *GetStaticCharField)
575+ (JNIEnv *env, jclass clazz, jfieldID fieldID);
576+ jshort (JNICALL *GetStaticShortField)
577+ (JNIEnv *env, jclass clazz, jfieldID fieldID);
578+ jint (JNICALL *GetStaticIntField)
579+ (JNIEnv *env, jclass clazz, jfieldID fieldID);
580+ jlong (JNICALL *GetStaticLongField)
581+ (JNIEnv *env, jclass clazz, jfieldID fieldID);
582+ jfloat (JNICALL *GetStaticFloatField)
583+ (JNIEnv *env, jclass clazz, jfieldID fieldID);
584+ jdouble (JNICALL *GetStaticDoubleField)
585+ (JNIEnv *env, jclass clazz, jfieldID fieldID);
586+
587+ void (JNICALL *SetStaticObjectField)
588+ (JNIEnv *env, jclass clazz, jfieldID fieldID, jobject value);
589+ void (JNICALL *SetStaticBooleanField)
590+ (JNIEnv *env, jclass clazz, jfieldID fieldID, jboolean value);
591+ void (JNICALL *SetStaticByteField)
592+ (JNIEnv *env, jclass clazz, jfieldID fieldID, jbyte value);
593+ void (JNICALL *SetStaticCharField)
594+ (JNIEnv *env, jclass clazz, jfieldID fieldID, jchar value);
595+ void (JNICALL *SetStaticShortField)
596+ (JNIEnv *env, jclass clazz, jfieldID fieldID, jshort value);
597+ void (JNICALL *SetStaticIntField)
598+ (JNIEnv *env, jclass clazz, jfieldID fieldID, jint value);
599+ void (JNICALL *SetStaticLongField)
600+ (JNIEnv *env, jclass clazz, jfieldID fieldID, jlong value);
601+ void (JNICALL *SetStaticFloatField)
602+ (JNIEnv *env, jclass clazz, jfieldID fieldID, jfloat value);
603+ void (JNICALL *SetStaticDoubleField)
604+ (JNIEnv *env, jclass clazz, jfieldID fieldID, jdouble value);
605+
606+ jstring (JNICALL *NewString)
607+ (JNIEnv *env, const jchar *unicode, jsize len);
608+ jsize (JNICALL *GetStringLength)
609+ (JNIEnv *env, jstring str);
610+ const jchar *(JNICALL *GetStringChars)
611+ (JNIEnv *env, jstring str, jboolean *isCopy);
612+ void (JNICALL *ReleaseStringChars)
613+ (JNIEnv *env, jstring str, const jchar *chars);
614+
615+ jstring (JNICALL *NewStringUTF)
616+ (JNIEnv *env, const char *utf);
617+ jsize (JNICALL *GetStringUTFLength)
618+ (JNIEnv *env, jstring str);
619+ const char* (JNICALL *GetStringUTFChars)
620+ (JNIEnv *env, jstring str, jboolean *isCopy);
621+ void (JNICALL *ReleaseStringUTFChars)
622+ (JNIEnv *env, jstring str, const char* chars);
623+
624+
625+ jsize (JNICALL *GetArrayLength)
626+ (JNIEnv *env, jarray array);
627+
628+ jobjectArray (JNICALL *NewObjectArray)
629+ (JNIEnv *env, jsize len, jclass clazz, jobject init);
630+ jobject (JNICALL *GetObjectArrayElement)
631+ (JNIEnv *env, jobjectArray array, jsize index);
632+ void (JNICALL *SetObjectArrayElement)
633+ (JNIEnv *env, jobjectArray array, jsize index, jobject val);
634+
635+ jbooleanArray (JNICALL *NewBooleanArray)
636+ (JNIEnv *env, jsize len);
637+ jbyteArray (JNICALL *NewByteArray)
638+ (JNIEnv *env, jsize len);
639+ jcharArray (JNICALL *NewCharArray)
640+ (JNIEnv *env, jsize len);
641+ jshortArray (JNICALL *NewShortArray)
642+ (JNIEnv *env, jsize len);
643+ jintArray (JNICALL *NewIntArray)
644+ (JNIEnv *env, jsize len);
645+ jlongArray (JNICALL *NewLongArray)
646+ (JNIEnv *env, jsize len);
647+ jfloatArray (JNICALL *NewFloatArray)
648+ (JNIEnv *env, jsize len);
649+ jdoubleArray (JNICALL *NewDoubleArray)
650+ (JNIEnv *env, jsize len);
651+
652+ jboolean * (JNICALL *GetBooleanArrayElements)
653+ (JNIEnv *env, jbooleanArray array, jboolean *isCopy);
654+ jbyte * (JNICALL *GetByteArrayElements)
655+ (JNIEnv *env, jbyteArray array, jboolean *isCopy);
656+ jchar * (JNICALL *GetCharArrayElements)
657+ (JNIEnv *env, jcharArray array, jboolean *isCopy);
658+ jshort * (JNICALL *GetShortArrayElements)
659+ (JNIEnv *env, jshortArray array, jboolean *isCopy);
660+ jint * (JNICALL *GetIntArrayElements)
661+ (JNIEnv *env, jintArray array, jboolean *isCopy);
662+ jlong * (JNICALL *GetLongArrayElements)
663+ (JNIEnv *env, jlongArray array, jboolean *isCopy);
664+ jfloat * (JNICALL *GetFloatArrayElements)
665+ (JNIEnv *env, jfloatArray array, jboolean *isCopy);
666+ jdouble * (JNICALL *GetDoubleArrayElements)
667+ (JNIEnv *env, jdoubleArray array, jboolean *isCopy);
668+
669+ void (JNICALL *ReleaseBooleanArrayElements)
670+ (JNIEnv *env, jbooleanArray array, jboolean *elems, jint mode);
671+ void (JNICALL *ReleaseByteArrayElements)
672+ (JNIEnv *env, jbyteArray array, jbyte *elems, jint mode);
673+ void (JNICALL *ReleaseCharArrayElements)
674+ (JNIEnv *env, jcharArray array, jchar *elems, jint mode);
675+ void (JNICALL *ReleaseShortArrayElements)
676+ (JNIEnv *env, jshortArray array, jshort *elems, jint mode);
677+ void (JNICALL *ReleaseIntArrayElements)
678+ (JNIEnv *env, jintArray array, jint *elems, jint mode);
679+ void (JNICALL *ReleaseLongArrayElements)
680+ (JNIEnv *env, jlongArray array, jlong *elems, jint mode);
681+ void (JNICALL *ReleaseFloatArrayElements)
682+ (JNIEnv *env, jfloatArray array, jfloat *elems, jint mode);
683+ void (JNICALL *ReleaseDoubleArrayElements)
684+ (JNIEnv *env, jdoubleArray array, jdouble *elems, jint mode);
685+
686+ void (JNICALL *GetBooleanArrayRegion)
687+ (JNIEnv *env, jbooleanArray array, jsize start, jsize l, jboolean *buf);
688+ void (JNICALL *GetByteArrayRegion)
689+ (JNIEnv *env, jbyteArray array, jsize start, jsize len, jbyte *buf);
690+ void (JNICALL *GetCharArrayRegion)
691+ (JNIEnv *env, jcharArray array, jsize start, jsize len, jchar *buf);
692+ void (JNICALL *GetShortArrayRegion)
693+ (JNIEnv *env, jshortArray array, jsize start, jsize len, jshort *buf);
694+ void (JNICALL *GetIntArrayRegion)
695+ (JNIEnv *env, jintArray array, jsize start, jsize len, jint *buf);
696+ void (JNICALL *GetLongArrayRegion)
697+ (JNIEnv *env, jlongArray array, jsize start, jsize len, jlong *buf);
698+ void (JNICALL *GetFloatArrayRegion)
699+ (JNIEnv *env, jfloatArray array, jsize start, jsize len, jfloat *buf);
700+ void (JNICALL *GetDoubleArrayRegion)
701+ (JNIEnv *env, jdoubleArray array, jsize start, jsize len, jdouble *buf);
702+
703+ void (JNICALL *SetBooleanArrayRegion)
704+ (JNIEnv *env, jbooleanArray array, jsize start, jsize l, const jboolean *buf);
705+ void (JNICALL *SetByteArrayRegion)
706+ (JNIEnv *env, jbyteArray array, jsize start, jsize len, const jbyte *buf);
707+ void (JNICALL *SetCharArrayRegion)
708+ (JNIEnv *env, jcharArray array, jsize start, jsize len, const jchar *buf);
709+ void (JNICALL *SetShortArrayRegion)
710+ (JNIEnv *env, jshortArray array, jsize start, jsize len, const jshort *buf);
711+ void (JNICALL *SetIntArrayRegion)
712+ (JNIEnv *env, jintArray array, jsize start, jsize len, const jint *buf);
713+ void (JNICALL *SetLongArrayRegion)
714+ (JNIEnv *env, jlongArray array, jsize start, jsize len, const jlong *buf);
715+ void (JNICALL *SetFloatArrayRegion)
716+ (JNIEnv *env, jfloatArray array, jsize start, jsize len, const jfloat *buf);
717+ void (JNICALL *SetDoubleArrayRegion)
718+ (JNIEnv *env, jdoubleArray array, jsize start, jsize len, const jdouble *buf);
719+
720+ jint (JNICALL *RegisterNatives)
721+ (JNIEnv *env, jclass clazz, const JNINativeMethod *methods,
722+ jint nMethods);
723+ jint (JNICALL *UnregisterNatives)
724+ (JNIEnv *env, jclass clazz);
725+
726+ jint (JNICALL *MonitorEnter)
727+ (JNIEnv *env, jobject obj);
728+ jint (JNICALL *MonitorExit)
729+ (JNIEnv *env, jobject obj);
730+
731+ jint (JNICALL *GetJavaVM)
732+ (JNIEnv *env, JavaVM **vm);
733+
734+ void (JNICALL *GetStringRegion)
735+ (JNIEnv *env, jstring str, jsize start, jsize len, jchar *buf);
736+ void (JNICALL *GetStringUTFRegion)
737+ (JNIEnv *env, jstring str, jsize start, jsize len, char *buf);
738+
739+ void * (JNICALL *GetPrimitiveArrayCritical)
740+ (JNIEnv *env, jarray array, jboolean *isCopy);
741+ void (JNICALL *ReleasePrimitiveArrayCritical)
742+ (JNIEnv *env, jarray array, void *carray, jint mode);
743+
744+ const jchar * (JNICALL *GetStringCritical)
745+ (JNIEnv *env, jstring string, jboolean *isCopy);
746+ void (JNICALL *ReleaseStringCritical)
747+ (JNIEnv *env, jstring string, const jchar *cstring);
748+
749+ jweak (JNICALL *NewWeakGlobalRef)
750+ (JNIEnv *env, jobject obj);
751+ void (JNICALL *DeleteWeakGlobalRef)
752+ (JNIEnv *env, jweak ref);
753+
754+ jboolean (JNICALL *ExceptionCheck)
755+ (JNIEnv *env);
756+
757+ jobject (JNICALL *NewDirectByteBuffer)
758+ (JNIEnv* env, void* address, jlong capacity);
759+ void* (JNICALL *GetDirectBufferAddress)
760+ (JNIEnv* env, jobject buf);
761+ jlong (JNICALL *GetDirectBufferCapacity)
762+ (JNIEnv* env, jobject buf);
763+
764+ /* New JNI 1.6 Features */
765+
766+ jobjectRefType (JNICALL *GetObjectRefType)
767+ (JNIEnv* env, jobject obj);
768+
769+ /* Module Features */
770+
771+ jobject (JNICALL *GetModule)
772+ (JNIEnv* env, jclass clazz);
773+};
774+
775+/*
776+ * We use inlined functions for C++ so that programmers can write:
777+ *
778+ * env->FindClass("java/lang/String")
779+ *
780+ * in C++ rather than:
781+ *
782+ * (*env)->FindClass(env, "java/lang/String")
783+ *
784+ * in C.
785+ */
786+
787+struct JNIEnv_ {
788+ const struct JNINativeInterface_ *functions;
789+#ifdef __cplusplus
790+
791+ jint GetVersion() {
792+ return functions->GetVersion(this);
793+ }
794+ jclass DefineClass(const char *name, jobject loader, const jbyte *buf,
795+ jsize len) {
796+ return functions->DefineClass(this, name, loader, buf, len);
797+ }
798+ jclass FindClass(const char *name) {
799+ return functions->FindClass(this, name);
800+ }
801+ jmethodID FromReflectedMethod(jobject method) {
802+ return functions->FromReflectedMethod(this,method);
803+ }
804+ jfieldID FromReflectedField(jobject field) {
805+ return functions->FromReflectedField(this,field);
806+ }
807+
808+ jobject ToReflectedMethod(jclass cls, jmethodID methodID, jboolean isStatic) {
809+ return functions->ToReflectedMethod(this, cls, methodID, isStatic);
810+ }
811+
812+ jclass GetSuperclass(jclass sub) {
813+ return functions->GetSuperclass(this, sub);
814+ }
815+ jboolean IsAssignableFrom(jclass sub, jclass sup) {
816+ return functions->IsAssignableFrom(this, sub, sup);
817+ }
818+
819+ jobject ToReflectedField(jclass cls, jfieldID fieldID, jboolean isStatic) {
820+ return functions->ToReflectedField(this,cls,fieldID,isStatic);
821+ }
822+
823+ jint Throw(jthrowable obj) {
824+ return functions->Throw(this, obj);
825+ }
826+ jint ThrowNew(jclass clazz, const char *msg) {
827+ return functions->ThrowNew(this, clazz, msg);
828+ }
829+ jthrowable ExceptionOccurred() {
830+ return functions->ExceptionOccurred(this);
831+ }
832+ void ExceptionDescribe() {
833+ functions->ExceptionDescribe(this);
834+ }
835+ void ExceptionClear() {
836+ functions->ExceptionClear(this);
837+ }
838+ void FatalError(const char *msg) {
839+ functions->FatalError(this, msg);
840+ }
841+
842+ jint PushLocalFrame(jint capacity) {
843+ return functions->PushLocalFrame(this,capacity);
844+ }
845+ jobject PopLocalFrame(jobject result) {
846+ return functions->PopLocalFrame(this,result);
847+ }
848+
849+ jobject NewGlobalRef(jobject lobj) {
850+ return functions->NewGlobalRef(this,lobj);
851+ }
852+ void DeleteGlobalRef(jobject gref) {
853+ functions->DeleteGlobalRef(this,gref);
854+ }
855+ void DeleteLocalRef(jobject obj) {
856+ functions->DeleteLocalRef(this, obj);
857+ }
858+
859+ jboolean IsSameObject(jobject obj1, jobject obj2) {
860+ return functions->IsSameObject(this,obj1,obj2);
861+ }
862+
863+ jobject NewLocalRef(jobject ref) {
864+ return functions->NewLocalRef(this,ref);
865+ }
866+ jint EnsureLocalCapacity(jint capacity) {
867+ return functions->EnsureLocalCapacity(this,capacity);
868+ }
869+
870+ jobject AllocObject(jclass clazz) {
871+ return functions->AllocObject(this,clazz);
872+ }
873+ jobject NewObject(jclass clazz, jmethodID methodID, ...) {
874+ va_list args;
875+ jobject result;
876+ va_start(args, methodID);
877+ result = functions->NewObjectV(this,clazz,methodID,args);
878+ va_end(args);
879+ return result;
880+ }
881+ jobject NewObjectV(jclass clazz, jmethodID methodID,
882+ va_list args) {
883+ return functions->NewObjectV(this,clazz,methodID,args);
884+ }
885+ jobject NewObjectA(jclass clazz, jmethodID methodID,
886+ const jvalue *args) {
887+ return functions->NewObjectA(this,clazz,methodID,args);
888+ }
889+
890+ jclass GetObjectClass(jobject obj) {
891+ return functions->GetObjectClass(this,obj);
892+ }
893+ jboolean IsInstanceOf(jobject obj, jclass clazz) {
894+ return functions->IsInstanceOf(this,obj,clazz);
895+ }
896+
897+ jmethodID GetMethodID(jclass clazz, const char *name,
898+ const char *sig) {
899+ return functions->GetMethodID(this,clazz,name,sig);
900+ }
901+
902+ jobject CallObjectMethod(jobject obj, jmethodID methodID, ...) {
903+ va_list args;
904+ jobject result;
905+ va_start(args,methodID);
906+ result = functions->CallObjectMethodV(this,obj,methodID,args);
907+ va_end(args);
908+ return result;
909+ }
910+ jobject CallObjectMethodV(jobject obj, jmethodID methodID,
911+ va_list args) {
912+ return functions->CallObjectMethodV(this,obj,methodID,args);
913+ }
914+ jobject CallObjectMethodA(jobject obj, jmethodID methodID,
915+ const jvalue * args) {
916+ return functions->CallObjectMethodA(this,obj,methodID,args);
917+ }
918+
919+ jboolean CallBooleanMethod(jobject obj,
920+ jmethodID methodID, ...) {
921+ va_list args;
922+ jboolean result;
923+ va_start(args,methodID);
924+ result = functions->CallBooleanMethodV(this,obj,methodID,args);
925+ va_end(args);
926+ return result;
927+ }
928+ jboolean CallBooleanMethodV(jobject obj, jmethodID methodID,
929+ va_list args) {
930+ return functions->CallBooleanMethodV(this,obj,methodID,args);
931+ }
932+ jboolean CallBooleanMethodA(jobject obj, jmethodID methodID,
933+ const jvalue * args) {
934+ return functions->CallBooleanMethodA(this,obj,methodID, args);
935+ }
936+
937+ jbyte CallByteMethod(jobject obj, jmethodID methodID, ...) {
938+ va_list args;
939+ jbyte result;
940+ va_start(args,methodID);
941+ result = functions->CallByteMethodV(this,obj,methodID,args);
942+ va_end(args);
943+ return result;
944+ }
945+ jbyte CallByteMethodV(jobject obj, jmethodID methodID,
946+ va_list args) {
947+ return functions->CallByteMethodV(this,obj,methodID,args);
948+ }
949+ jbyte CallByteMethodA(jobject obj, jmethodID methodID,
950+ const jvalue * args) {
951+ return functions->CallByteMethodA(this,obj,methodID,args);
952+ }
953+
954+ jchar CallCharMethod(jobject obj, jmethodID methodID, ...) {
955+ va_list args;
956+ jchar result;
957+ va_start(args,methodID);
958+ result = functions->CallCharMethodV(this,obj,methodID,args);
959+ va_end(args);
960+ return result;
961+ }
962+ jchar CallCharMethodV(jobject obj, jmethodID methodID,
963+ va_list args) {
964+ return functions->CallCharMethodV(this,obj,methodID,args);
965+ }
966+ jchar CallCharMethodA(jobject obj, jmethodID methodID,
967+ const jvalue * args) {
968+ return functions->CallCharMethodA(this,obj,methodID,args);
969+ }
970+
971+ jshort CallShortMethod(jobject obj, jmethodID methodID, ...) {
972+ va_list args;
973+ jshort result;
974+ va_start(args,methodID);
975+ result = functions->CallShortMethodV(this,obj,methodID,args);
976+ va_end(args);
977+ return result;
978+ }
979+ jshort CallShortMethodV(jobject obj, jmethodID methodID,
980+ va_list args) {
981+ return functions->CallShortMethodV(this,obj,methodID,args);
982+ }
983+ jshort CallShortMethodA(jobject obj, jmethodID methodID,
984+ const jvalue * args) {
985+ return functions->CallShortMethodA(this,obj,methodID,args);
986+ }
987+
988+ jint CallIntMethod(jobject obj, jmethodID methodID, ...) {
989+ va_list args;
990+ jint result;
991+ va_start(args,methodID);
992+ result = functions->CallIntMethodV(this,obj,methodID,args);
993+ va_end(args);
994+ return result;
995+ }
996+ jint CallIntMethodV(jobject obj, jmethodID methodID,
997+ va_list args) {
998+ return functions->CallIntMethodV(this,obj,methodID,args);
999+ }
1000+ jint CallIntMethodA(jobject obj, jmethodID methodID,
1001+ const jvalue * args) {
1002+ return functions->CallIntMethodA(this,obj,methodID,args);
1003+ }
1004+
1005+ jlong CallLongMethod(jobject obj, jmethodID methodID, ...) {
1006+ va_list args;
1007+ jlong result;
1008+ va_start(args,methodID);
1009+ result = functions->CallLongMethodV(this,obj,methodID,args);
1010+ va_end(args);
1011+ return result;
1012+ }
1013+ jlong CallLongMethodV(jobject obj, jmethodID methodID,
1014+ va_list args) {
1015+ return functions->CallLongMethodV(this,obj,methodID,args);
1016+ }
1017+ jlong CallLongMethodA(jobject obj, jmethodID methodID,
1018+ const jvalue * args) {
1019+ return functions->CallLongMethodA(this,obj,methodID,args);
1020+ }
1021+
1022+ jfloat CallFloatMethod(jobject obj, jmethodID methodID, ...) {
1023+ va_list args;
1024+ jfloat result;
1025+ va_start(args,methodID);
1026+ result = functions->CallFloatMethodV(this,obj,methodID,args);
1027+ va_end(args);
1028+ return result;
1029+ }
1030+ jfloat CallFloatMethodV(jobject obj, jmethodID methodID,
1031+ va_list args) {
1032+ return functions->CallFloatMethodV(this,obj,methodID,args);
1033+ }
1034+ jfloat CallFloatMethodA(jobject obj, jmethodID methodID,
1035+ const jvalue * args) {
1036+ return functions->CallFloatMethodA(this,obj,methodID,args);
1037+ }
1038+
1039+ jdouble CallDoubleMethod(jobject obj, jmethodID methodID, ...) {
1040+ va_list args;
1041+ jdouble result;
1042+ va_start(args,methodID);
1043+ result = functions->CallDoubleMethodV(this,obj,methodID,args);
1044+ va_end(args);
1045+ return result;
1046+ }
1047+ jdouble CallDoubleMethodV(jobject obj, jmethodID methodID,
1048+ va_list args) {
1049+ return functions->CallDoubleMethodV(this,obj,methodID,args);
1050+ }
1051+ jdouble CallDoubleMethodA(jobject obj, jmethodID methodID,
1052+ const jvalue * args) {
1053+ return functions->CallDoubleMethodA(this,obj,methodID,args);
1054+ }
1055+
1056+ void CallVoidMethod(jobject obj, jmethodID methodID, ...) {
1057+ va_list args;
1058+ va_start(args,methodID);
1059+ functions->CallVoidMethodV(this,obj,methodID,args);
1060+ va_end(args);
1061+ }
1062+ void CallVoidMethodV(jobject obj, jmethodID methodID,
1063+ va_list args) {
1064+ functions->CallVoidMethodV(this,obj,methodID,args);
1065+ }
1066+ void CallVoidMethodA(jobject obj, jmethodID methodID,
1067+ const jvalue * args) {
1068+ functions->CallVoidMethodA(this,obj,methodID,args);
1069+ }
1070+
1071+ jobject CallNonvirtualObjectMethod(jobject obj, jclass clazz,
1072+ jmethodID methodID, ...) {
1073+ va_list args;
1074+ jobject result;
1075+ va_start(args,methodID);
1076+ result = functions->CallNonvirtualObjectMethodV(this,obj,clazz,
1077+ methodID,args);
1078+ va_end(args);
1079+ return result;
1080+ }
1081+ jobject CallNonvirtualObjectMethodV(jobject obj, jclass clazz,
1082+ jmethodID methodID, va_list args) {
1083+ return functions->CallNonvirtualObjectMethodV(this,obj,clazz,
1084+ methodID,args);
1085+ }
1086+ jobject CallNonvirtualObjectMethodA(jobject obj, jclass clazz,
1087+ jmethodID methodID, const jvalue * args) {
1088+ return functions->CallNonvirtualObjectMethodA(this,obj,clazz,
1089+ methodID,args);
1090+ }
1091+
1092+ jboolean CallNonvirtualBooleanMethod(jobject obj, jclass clazz,
1093+ jmethodID methodID, ...) {
1094+ va_list args;
1095+ jboolean result;
1096+ va_start(args,methodID);
1097+ result = functions->CallNonvirtualBooleanMethodV(this,obj,clazz,
1098+ methodID,args);
1099+ va_end(args);
1100+ return result;
1101+ }
1102+ jboolean CallNonvirtualBooleanMethodV(jobject obj, jclass clazz,
1103+ jmethodID methodID, va_list args) {
1104+ return functions->CallNonvirtualBooleanMethodV(this,obj,clazz,
1105+ methodID,args);
1106+ }
1107+ jboolean CallNonvirtualBooleanMethodA(jobject obj, jclass clazz,
1108+ jmethodID methodID, const jvalue * args) {
1109+ return functions->CallNonvirtualBooleanMethodA(this,obj,clazz,
1110+ methodID, args);
1111+ }
1112+
1113+ jbyte CallNonvirtualByteMethod(jobject obj, jclass clazz,
1114+ jmethodID methodID, ...) {
1115+ va_list args;
1116+ jbyte result;
1117+ va_start(args,methodID);
1118+ result = functions->CallNonvirtualByteMethodV(this,obj,clazz,
1119+ methodID,args);
1120+ va_end(args);
1121+ return result;
1122+ }
1123+ jbyte CallNonvirtualByteMethodV(jobject obj, jclass clazz,
1124+ jmethodID methodID, va_list args) {
1125+ return functions->CallNonvirtualByteMethodV(this,obj,clazz,
1126+ methodID,args);
1127+ }
1128+ jbyte CallNonvirtualByteMethodA(jobject obj, jclass clazz,
1129+ jmethodID methodID, const jvalue * args) {
1130+ return functions->CallNonvirtualByteMethodA(this,obj,clazz,
1131+ methodID,args);
1132+ }
1133+
1134+ jchar CallNonvirtualCharMethod(jobject obj, jclass clazz,
1135+ jmethodID methodID, ...) {
1136+ va_list args;
1137+ jchar result;
1138+ va_start(args,methodID);
1139+ result = functions->CallNonvirtualCharMethodV(this,obj,clazz,
1140+ methodID,args);
1141+ va_end(args);
1142+ return result;
1143+ }
1144+ jchar CallNonvirtualCharMethodV(jobject obj, jclass clazz,
1145+ jmethodID methodID, va_list args) {
1146+ return functions->CallNonvirtualCharMethodV(this,obj,clazz,
1147+ methodID,args);
1148+ }
1149+ jchar CallNonvirtualCharMethodA(jobject obj, jclass clazz,
1150+ jmethodID methodID, const jvalue * args) {
1151+ return functions->CallNonvirtualCharMethodA(this,obj,clazz,
1152+ methodID,args);
1153+ }
1154+
1155+ jshort CallNonvirtualShortMethod(jobject obj, jclass clazz,
1156+ jmethodID methodID, ...) {
1157+ va_list args;
1158+ jshort result;
1159+ va_start(args,methodID);
1160+ result = functions->CallNonvirtualShortMethodV(this,obj,clazz,
1161+ methodID,args);
1162+ va_end(args);
1163+ return result;
1164+ }
1165+ jshort CallNonvirtualShortMethodV(jobject obj, jclass clazz,
1166+ jmethodID methodID, va_list args) {
1167+ return functions->CallNonvirtualShortMethodV(this,obj,clazz,
1168+ methodID,args);
1169+ }
1170+ jshort CallNonvirtualShortMethodA(jobject obj, jclass clazz,
1171+ jmethodID methodID, const jvalue * args) {
1172+ return functions->CallNonvirtualShortMethodA(this,obj,clazz,
1173+ methodID,args);
1174+ }
1175+
1176+ jint CallNonvirtualIntMethod(jobject obj, jclass clazz,
1177+ jmethodID methodID, ...) {
1178+ va_list args;
1179+ jint result;
1180+ va_start(args,methodID);
1181+ result = functions->CallNonvirtualIntMethodV(this,obj,clazz,
1182+ methodID,args);
1183+ va_end(args);
1184+ return result;
1185+ }
1186+ jint CallNonvirtualIntMethodV(jobject obj, jclass clazz,
1187+ jmethodID methodID, va_list args) {
1188+ return functions->CallNonvirtualIntMethodV(this,obj,clazz,
1189+ methodID,args);
1190+ }
1191+ jint CallNonvirtualIntMethodA(jobject obj, jclass clazz,
1192+ jmethodID methodID, const jvalue * args) {
1193+ return functions->CallNonvirtualIntMethodA(this,obj,clazz,
1194+ methodID,args);
1195+ }
1196+
1197+ jlong CallNonvirtualLongMethod(jobject obj, jclass clazz,
1198+ jmethodID methodID, ...) {
1199+ va_list args;
1200+ jlong result;
1201+ va_start(args,methodID);
1202+ result = functions->CallNonvirtualLongMethodV(this,obj,clazz,
1203+ methodID,args);
1204+ va_end(args);
1205+ return result;
1206+ }
1207+ jlong CallNonvirtualLongMethodV(jobject obj, jclass clazz,
1208+ jmethodID methodID, va_list args) {
1209+ return functions->CallNonvirtualLongMethodV(this,obj,clazz,
1210+ methodID,args);
1211+ }
1212+ jlong CallNonvirtualLongMethodA(jobject obj, jclass clazz,
1213+ jmethodID methodID, const jvalue * args) {
1214+ return functions->CallNonvirtualLongMethodA(this,obj,clazz,
1215+ methodID,args);
1216+ }
1217+
1218+ jfloat CallNonvirtualFloatMethod(jobject obj, jclass clazz,
1219+ jmethodID methodID, ...) {
1220+ va_list args;
1221+ jfloat result;
1222+ va_start(args,methodID);
1223+ result = functions->CallNonvirtualFloatMethodV(this,obj,clazz,
1224+ methodID,args);
1225+ va_end(args);
1226+ return result;
1227+ }
1228+ jfloat CallNonvirtualFloatMethodV(jobject obj, jclass clazz,
1229+ jmethodID methodID,
1230+ va_list args) {
1231+ return functions->CallNonvirtualFloatMethodV(this,obj,clazz,
1232+ methodID,args);
1233+ }
1234+ jfloat CallNonvirtualFloatMethodA(jobject obj, jclass clazz,
1235+ jmethodID methodID,
1236+ const jvalue * args) {
1237+ return functions->CallNonvirtualFloatMethodA(this,obj,clazz,
1238+ methodID,args);
1239+ }
1240+
1241+ jdouble CallNonvirtualDoubleMethod(jobject obj, jclass clazz,
1242+ jmethodID methodID, ...) {
1243+ va_list args;
1244+ jdouble result;
1245+ va_start(args,methodID);
1246+ result = functions->CallNonvirtualDoubleMethodV(this,obj,clazz,
1247+ methodID,args);
1248+ va_end(args);
1249+ return result;
1250+ }
1251+ jdouble CallNonvirtualDoubleMethodV(jobject obj, jclass clazz,
1252+ jmethodID methodID,
1253+ va_list args) {
1254+ return functions->CallNonvirtualDoubleMethodV(this,obj,clazz,
1255+ methodID,args);
1256+ }
1257+ jdouble CallNonvirtualDoubleMethodA(jobject obj, jclass clazz,
1258+ jmethodID methodID,
1259+ const jvalue * args) {
1260+ return functions->CallNonvirtualDoubleMethodA(this,obj,clazz,
1261+ methodID,args);
1262+ }
1263+
1264+ void CallNonvirtualVoidMethod(jobject obj, jclass clazz,
1265+ jmethodID methodID, ...) {
1266+ va_list args;
1267+ va_start(args,methodID);
1268+ functions->CallNonvirtualVoidMethodV(this,obj,clazz,methodID,args);
1269+ va_end(args);
1270+ }
1271+ void CallNonvirtualVoidMethodV(jobject obj, jclass clazz,
1272+ jmethodID methodID,
1273+ va_list args) {
1274+ functions->CallNonvirtualVoidMethodV(this,obj,clazz,methodID,args);
1275+ }
1276+ void CallNonvirtualVoidMethodA(jobject obj, jclass clazz,
1277+ jmethodID methodID,
1278+ const jvalue * args) {
1279+ functions->CallNonvirtualVoidMethodA(this,obj,clazz,methodID,args);
1280+ }
1281+
1282+ jfieldID GetFieldID(jclass clazz, const char *name,
1283+ const char *sig) {
1284+ return functions->GetFieldID(this,clazz,name,sig);
1285+ }
1286+
1287+ jobject GetObjectField(jobject obj, jfieldID fieldID) {
1288+ return functions->GetObjectField(this,obj,fieldID);
1289+ }
1290+ jboolean GetBooleanField(jobject obj, jfieldID fieldID) {
1291+ return functions->GetBooleanField(this,obj,fieldID);
1292+ }
1293+ jbyte GetByteField(jobject obj, jfieldID fieldID) {
1294+ return functions->GetByteField(this,obj,fieldID);
1295+ }
1296+ jchar GetCharField(jobject obj, jfieldID fieldID) {
1297+ return functions->GetCharField(this,obj,fieldID);
1298+ }
1299+ jshort GetShortField(jobject obj, jfieldID fieldID) {
1300+ return functions->GetShortField(this,obj,fieldID);
1301+ }
1302+ jint GetIntField(jobject obj, jfieldID fieldID) {
1303+ return functions->GetIntField(this,obj,fieldID);
1304+ }
1305+ jlong GetLongField(jobject obj, jfieldID fieldID) {
1306+ return functions->GetLongField(this,obj,fieldID);
1307+ }
1308+ jfloat GetFloatField(jobject obj, jfieldID fieldID) {
1309+ return functions->GetFloatField(this,obj,fieldID);
1310+ }
1311+ jdouble GetDoubleField(jobject obj, jfieldID fieldID) {
1312+ return functions->GetDoubleField(this,obj,fieldID);
1313+ }
1314+
1315+ void SetObjectField(jobject obj, jfieldID fieldID, jobject val) {
1316+ functions->SetObjectField(this,obj,fieldID,val);
1317+ }
1318+ void SetBooleanField(jobject obj, jfieldID fieldID,
1319+ jboolean val) {
1320+ functions->SetBooleanField(this,obj,fieldID,val);
1321+ }
1322+ void SetByteField(jobject obj, jfieldID fieldID,
1323+ jbyte val) {
1324+ functions->SetByteField(this,obj,fieldID,val);
1325+ }
1326+ void SetCharField(jobject obj, jfieldID fieldID,
1327+ jchar val) {
1328+ functions->SetCharField(this,obj,fieldID,val);
1329+ }
1330+ void SetShortField(jobject obj, jfieldID fieldID,
1331+ jshort val) {
1332+ functions->SetShortField(this,obj,fieldID,val);
1333+ }
1334+ void SetIntField(jobject obj, jfieldID fieldID,
1335+ jint val) {
1336+ functions->SetIntField(this,obj,fieldID,val);
1337+ }
1338+ void SetLongField(jobject obj, jfieldID fieldID,
1339+ jlong val) {
1340+ functions->SetLongField(this,obj,fieldID,val);
1341+ }
1342+ void SetFloatField(jobject obj, jfieldID fieldID,
1343+ jfloat val) {
1344+ functions->SetFloatField(this,obj,fieldID,val);
1345+ }
1346+ void SetDoubleField(jobject obj, jfieldID fieldID,
1347+ jdouble val) {
1348+ functions->SetDoubleField(this,obj,fieldID,val);
1349+ }
1350+
1351+ jmethodID GetStaticMethodID(jclass clazz, const char *name,
1352+ const char *sig) {
1353+ return functions->GetStaticMethodID(this,clazz,name,sig);
1354+ }
1355+
1356+ jobject CallStaticObjectMethod(jclass clazz, jmethodID methodID,
1357+ ...) {
1358+ va_list args;
1359+ jobject result;
1360+ va_start(args,methodID);
1361+ result = functions->CallStaticObjectMethodV(this,clazz,methodID,args);
1362+ va_end(args);
1363+ return result;
1364+ }
1365+ jobject CallStaticObjectMethodV(jclass clazz, jmethodID methodID,
1366+ va_list args) {
1367+ return functions->CallStaticObjectMethodV(this,clazz,methodID,args);
1368+ }
1369+ jobject CallStaticObjectMethodA(jclass clazz, jmethodID methodID,
1370+ const jvalue *args) {
1371+ return functions->CallStaticObjectMethodA(this,clazz,methodID,args);
1372+ }
1373+
1374+ jboolean CallStaticBooleanMethod(jclass clazz,
1375+ jmethodID methodID, ...) {
1376+ va_list args;
1377+ jboolean result;
1378+ va_start(args,methodID);
1379+ result = functions->CallStaticBooleanMethodV(this,clazz,methodID,args);
1380+ va_end(args);
1381+ return result;
1382+ }
1383+ jboolean CallStaticBooleanMethodV(jclass clazz,
1384+ jmethodID methodID, va_list args) {
1385+ return functions->CallStaticBooleanMethodV(this,clazz,methodID,args);
1386+ }
1387+ jboolean CallStaticBooleanMethodA(jclass clazz,
1388+ jmethodID methodID, const jvalue *args) {
1389+ return functions->CallStaticBooleanMethodA(this,clazz,methodID,args);
1390+ }
1391+
1392+ jbyte CallStaticByteMethod(jclass clazz,
1393+ jmethodID methodID, ...) {
1394+ va_list args;
1395+ jbyte result;
1396+ va_start(args,methodID);
1397+ result = functions->CallStaticByteMethodV(this,clazz,methodID,args);
1398+ va_end(args);
1399+ return result;
1400+ }
1401+ jbyte CallStaticByteMethodV(jclass clazz,
1402+ jmethodID methodID, va_list args) {
1403+ return functions->CallStaticByteMethodV(this,clazz,methodID,args);
1404+ }
1405+ jbyte CallStaticByteMethodA(jclass clazz,
1406+ jmethodID methodID, const jvalue *args) {
1407+ return functions->CallStaticByteMethodA(this,clazz,methodID,args);
1408+ }
1409+
1410+ jchar CallStaticCharMethod(jclass clazz,
1411+ jmethodID methodID, ...) {
1412+ va_list args;
1413+ jchar result;
1414+ va_start(args,methodID);
1415+ result = functions->CallStaticCharMethodV(this,clazz,methodID,args);
1416+ va_end(args);
1417+ return result;
1418+ }
1419+ jchar CallStaticCharMethodV(jclass clazz,
1420+ jmethodID methodID, va_list args) {
1421+ return functions->CallStaticCharMethodV(this,clazz,methodID,args);
1422+ }
1423+ jchar CallStaticCharMethodA(jclass clazz,
1424+ jmethodID methodID, const jvalue *args) {
1425+ return functions->CallStaticCharMethodA(this,clazz,methodID,args);
1426+ }
1427+
1428+ jshort CallStaticShortMethod(jclass clazz,
1429+ jmethodID methodID, ...) {
1430+ va_list args;
1431+ jshort result;
1432+ va_start(args,methodID);
1433+ result = functions->CallStaticShortMethodV(this,clazz,methodID,args);
1434+ va_end(args);
1435+ return result;
1436+ }
1437+ jshort CallStaticShortMethodV(jclass clazz,
1438+ jmethodID methodID, va_list args) {
1439+ return functions->CallStaticShortMethodV(this,clazz,methodID,args);
1440+ }
1441+ jshort CallStaticShortMethodA(jclass clazz,
1442+ jmethodID methodID, const jvalue *args) {
1443+ return functions->CallStaticShortMethodA(this,clazz,methodID,args);
1444+ }
1445+
1446+ jint CallStaticIntMethod(jclass clazz,
1447+ jmethodID methodID, ...) {
1448+ va_list args;
1449+ jint result;
1450+ va_start(args,methodID);
1451+ result = functions->CallStaticIntMethodV(this,clazz,methodID,args);
1452+ va_end(args);
1453+ return result;
1454+ }
1455+ jint CallStaticIntMethodV(jclass clazz,
1456+ jmethodID methodID, va_list args) {
1457+ return functions->CallStaticIntMethodV(this,clazz,methodID,args);
1458+ }
1459+ jint CallStaticIntMethodA(jclass clazz,
1460+ jmethodID methodID, const jvalue *args) {
1461+ return functions->CallStaticIntMethodA(this,clazz,methodID,args);
1462+ }
1463+
1464+ jlong CallStaticLongMethod(jclass clazz,
1465+ jmethodID methodID, ...) {
1466+ va_list args;
1467+ jlong result;
1468+ va_start(args,methodID);
1469+ result = functions->CallStaticLongMethodV(this,clazz,methodID,args);
1470+ va_end(args);
1471+ return result;
1472+ }
1473+ jlong CallStaticLongMethodV(jclass clazz,
1474+ jmethodID methodID, va_list args) {
1475+ return functions->CallStaticLongMethodV(this,clazz,methodID,args);
1476+ }
1477+ jlong CallStaticLongMethodA(jclass clazz,
1478+ jmethodID methodID, const jvalue *args) {
1479+ return functions->CallStaticLongMethodA(this,clazz,methodID,args);
1480+ }
1481+
1482+ jfloat CallStaticFloatMethod(jclass clazz,
1483+ jmethodID methodID, ...) {
1484+ va_list args;
1485+ jfloat result;
1486+ va_start(args,methodID);
1487+ result = functions->CallStaticFloatMethodV(this,clazz,methodID,args);
1488+ va_end(args);
1489+ return result;
1490+ }
1491+ jfloat CallStaticFloatMethodV(jclass clazz,
1492+ jmethodID methodID, va_list args) {
1493+ return functions->CallStaticFloatMethodV(this,clazz,methodID,args);
1494+ }
1495+ jfloat CallStaticFloatMethodA(jclass clazz,
1496+ jmethodID methodID, const jvalue *args) {
1497+ return functions->CallStaticFloatMethodA(this,clazz,methodID,args);
1498+ }
1499+
1500+ jdouble CallStaticDoubleMethod(jclass clazz,
1501+ jmethodID methodID, ...) {
1502+ va_list args;
1503+ jdouble result;
1504+ va_start(args,methodID);
1505+ result = functions->CallStaticDoubleMethodV(this,clazz,methodID,args);
1506+ va_end(args);
1507+ return result;
1508+ }
1509+ jdouble CallStaticDoubleMethodV(jclass clazz,
1510+ jmethodID methodID, va_list args) {
1511+ return functions->CallStaticDoubleMethodV(this,clazz,methodID,args);
1512+ }
1513+ jdouble CallStaticDoubleMethodA(jclass clazz,
1514+ jmethodID methodID, const jvalue *args) {
1515+ return functions->CallStaticDoubleMethodA(this,clazz,methodID,args);
1516+ }
1517+
1518+ void CallStaticVoidMethod(jclass cls, jmethodID methodID, ...) {
1519+ va_list args;
1520+ va_start(args,methodID);
1521+ functions->CallStaticVoidMethodV(this,cls,methodID,args);
1522+ va_end(args);
1523+ }
1524+ void CallStaticVoidMethodV(jclass cls, jmethodID methodID,
1525+ va_list args) {
1526+ functions->CallStaticVoidMethodV(this,cls,methodID,args);
1527+ }
1528+ void CallStaticVoidMethodA(jclass cls, jmethodID methodID,
1529+ const jvalue * args) {
1530+ functions->CallStaticVoidMethodA(this,cls,methodID,args);
1531+ }
1532+
1533+ jfieldID GetStaticFieldID(jclass clazz, const char *name,
1534+ const char *sig) {
1535+ return functions->GetStaticFieldID(this,clazz,name,sig);
1536+ }
1537+ jobject GetStaticObjectField(jclass clazz, jfieldID fieldID) {
1538+ return functions->GetStaticObjectField(this,clazz,fieldID);
1539+ }
1540+ jboolean GetStaticBooleanField(jclass clazz, jfieldID fieldID) {
1541+ return functions->GetStaticBooleanField(this,clazz,fieldID);
1542+ }
1543+ jbyte GetStaticByteField(jclass clazz, jfieldID fieldID) {
1544+ return functions->GetStaticByteField(this,clazz,fieldID);
1545+ }
1546+ jchar GetStaticCharField(jclass clazz, jfieldID fieldID) {
1547+ return functions->GetStaticCharField(this,clazz,fieldID);
1548+ }
1549+ jshort GetStaticShortField(jclass clazz, jfieldID fieldID) {
1550+ return functions->GetStaticShortField(this,clazz,fieldID);
1551+ }
1552+ jint GetStaticIntField(jclass clazz, jfieldID fieldID) {
1553+ return functions->GetStaticIntField(this,clazz,fieldID);
1554+ }
1555+ jlong GetStaticLongField(jclass clazz, jfieldID fieldID) {
1556+ return functions->GetStaticLongField(this,clazz,fieldID);
1557+ }
1558+ jfloat GetStaticFloatField(jclass clazz, jfieldID fieldID) {
1559+ return functions->GetStaticFloatField(this,clazz,fieldID);
1560+ }
1561+ jdouble GetStaticDoubleField(jclass clazz, jfieldID fieldID) {
1562+ return functions->GetStaticDoubleField(this,clazz,fieldID);
1563+ }
1564+
1565+ void SetStaticObjectField(jclass clazz, jfieldID fieldID,
1566+ jobject value) {
1567+ functions->SetStaticObjectField(this,clazz,fieldID,value);
1568+ }
1569+ void SetStaticBooleanField(jclass clazz, jfieldID fieldID,
1570+ jboolean value) {
1571+ functions->SetStaticBooleanField(this,clazz,fieldID,value);
1572+ }
1573+ void SetStaticByteField(jclass clazz, jfieldID fieldID,
1574+ jbyte value) {
1575+ functions->SetStaticByteField(this,clazz,fieldID,value);
1576+ }
1577+ void SetStaticCharField(jclass clazz, jfieldID fieldID,
1578+ jchar value) {
1579+ functions->SetStaticCharField(this,clazz,fieldID,value);
1580+ }
1581+ void SetStaticShortField(jclass clazz, jfieldID fieldID,
1582+ jshort value) {
1583+ functions->SetStaticShortField(this,clazz,fieldID,value);
1584+ }
1585+ void SetStaticIntField(jclass clazz, jfieldID fieldID,
1586+ jint value) {
1587+ functions->SetStaticIntField(this,clazz,fieldID,value);
1588+ }
1589+ void SetStaticLongField(jclass clazz, jfieldID fieldID,
1590+ jlong value) {
1591+ functions->SetStaticLongField(this,clazz,fieldID,value);
1592+ }
1593+ void SetStaticFloatField(jclass clazz, jfieldID fieldID,
1594+ jfloat value) {
1595+ functions->SetStaticFloatField(this,clazz,fieldID,value);
1596+ }
1597+ void SetStaticDoubleField(jclass clazz, jfieldID fieldID,
1598+ jdouble value) {
1599+ functions->SetStaticDoubleField(this,clazz,fieldID,value);
1600+ }
1601+
1602+ jstring NewString(const jchar *unicode, jsize len) {
1603+ return functions->NewString(this,unicode,len);
1604+ }
1605+ jsize GetStringLength(jstring str) {
1606+ return functions->GetStringLength(this,str);
1607+ }
1608+ const jchar *GetStringChars(jstring str, jboolean *isCopy) {
1609+ return functions->GetStringChars(this,str,isCopy);
1610+ }
1611+ void ReleaseStringChars(jstring str, const jchar *chars) {
1612+ functions->ReleaseStringChars(this,str,chars);
1613+ }
1614+
1615+ jstring NewStringUTF(const char *utf) {
1616+ return functions->NewStringUTF(this,utf);
1617+ }
1618+ jsize GetStringUTFLength(jstring str) {
1619+ return functions->GetStringUTFLength(this,str);
1620+ }
1621+ const char* GetStringUTFChars(jstring str, jboolean *isCopy) {
1622+ return functions->GetStringUTFChars(this,str,isCopy);
1623+ }
1624+ void ReleaseStringUTFChars(jstring str, const char* chars) {
1625+ functions->ReleaseStringUTFChars(this,str,chars);
1626+ }
1627+
1628+ jsize GetArrayLength(jarray array) {
1629+ return functions->GetArrayLength(this,array);
1630+ }
1631+
1632+ jobjectArray NewObjectArray(jsize len, jclass clazz,
1633+ jobject init) {
1634+ return functions->NewObjectArray(this,len,clazz,init);
1635+ }
1636+ jobject GetObjectArrayElement(jobjectArray array, jsize index) {
1637+ return functions->GetObjectArrayElement(this,array,index);
1638+ }
1639+ void SetObjectArrayElement(jobjectArray array, jsize index,
1640+ jobject val) {
1641+ functions->SetObjectArrayElement(this,array,index,val);
1642+ }
1643+
1644+ jbooleanArray NewBooleanArray(jsize len) {
1645+ return functions->NewBooleanArray(this,len);
1646+ }
1647+ jbyteArray NewByteArray(jsize len) {
1648+ return functions->NewByteArray(this,len);
1649+ }
1650+ jcharArray NewCharArray(jsize len) {
1651+ return functions->NewCharArray(this,len);
1652+ }
1653+ jshortArray NewShortArray(jsize len) {
1654+ return functions->NewShortArray(this,len);
1655+ }
1656+ jintArray NewIntArray(jsize len) {
1657+ return functions->NewIntArray(this,len);
1658+ }
1659+ jlongArray NewLongArray(jsize len) {
1660+ return functions->NewLongArray(this,len);
1661+ }
1662+ jfloatArray NewFloatArray(jsize len) {
1663+ return functions->NewFloatArray(this,len);
1664+ }
1665+ jdoubleArray NewDoubleArray(jsize len) {
1666+ return functions->NewDoubleArray(this,len);
1667+ }
1668+
1669+ jboolean * GetBooleanArrayElements(jbooleanArray array, jboolean *isCopy) {
1670+ return functions->GetBooleanArrayElements(this,array,isCopy);
1671+ }
1672+ jbyte * GetByteArrayElements(jbyteArray array, jboolean *isCopy) {
1673+ return functions->GetByteArrayElements(this,array,isCopy);
1674+ }
1675+ jchar * GetCharArrayElements(jcharArray array, jboolean *isCopy) {
1676+ return functions->GetCharArrayElements(this,array,isCopy);
1677+ }
1678+ jshort * GetShortArrayElements(jshortArray array, jboolean *isCopy) {
1679+ return functions->GetShortArrayElements(this,array,isCopy);
1680+ }
1681+ jint * GetIntArrayElements(jintArray array, jboolean *isCopy) {
1682+ return functions->GetIntArrayElements(this,array,isCopy);
1683+ }
1684+ jlong * GetLongArrayElements(jlongArray array, jboolean *isCopy) {
1685+ return functions->GetLongArrayElements(this,array,isCopy);
1686+ }
1687+ jfloat * GetFloatArrayElements(jfloatArray array, jboolean *isCopy) {
1688+ return functions->GetFloatArrayElements(this,array,isCopy);
1689+ }
1690+ jdouble * GetDoubleArrayElements(jdoubleArray array, jboolean *isCopy) {
1691+ return functions->GetDoubleArrayElements(this,array,isCopy);
1692+ }
1693+
1694+ void ReleaseBooleanArrayElements(jbooleanArray array,
1695+ jboolean *elems,
1696+ jint mode) {
1697+ functions->ReleaseBooleanArrayElements(this,array,elems,mode);
1698+ }
1699+ void ReleaseByteArrayElements(jbyteArray array,
1700+ jbyte *elems,
1701+ jint mode) {
1702+ functions->ReleaseByteArrayElements(this,array,elems,mode);
1703+ }
1704+ void ReleaseCharArrayElements(jcharArray array,
1705+ jchar *elems,
1706+ jint mode) {
1707+ functions->ReleaseCharArrayElements(this,array,elems,mode);
1708+ }
1709+ void ReleaseShortArrayElements(jshortArray array,
1710+ jshort *elems,
1711+ jint mode) {
1712+ functions->ReleaseShortArrayElements(this,array,elems,mode);
1713+ }
1714+ void ReleaseIntArrayElements(jintArray array,
1715+ jint *elems,
1716+ jint mode) {
1717+ functions->ReleaseIntArrayElements(this,array,elems,mode);
1718+ }
1719+ void ReleaseLongArrayElements(jlongArray array,
1720+ jlong *elems,
1721+ jint mode) {
1722+ functions->ReleaseLongArrayElements(this,array,elems,mode);
1723+ }
1724+ void ReleaseFloatArrayElements(jfloatArray array,
1725+ jfloat *elems,
1726+ jint mode) {
1727+ functions->ReleaseFloatArrayElements(this,array,elems,mode);
1728+ }
1729+ void ReleaseDoubleArrayElements(jdoubleArray array,
1730+ jdouble *elems,
1731+ jint mode) {
1732+ functions->ReleaseDoubleArrayElements(this,array,elems,mode);
1733+ }
1734+
1735+ void GetBooleanArrayRegion(jbooleanArray array,
1736+ jsize start, jsize len, jboolean *buf) {
1737+ functions->GetBooleanArrayRegion(this,array,start,len,buf);
1738+ }
1739+ void GetByteArrayRegion(jbyteArray array,
1740+ jsize start, jsize len, jbyte *buf) {
1741+ functions->GetByteArrayRegion(this,array,start,len,buf);
1742+ }
1743+ void GetCharArrayRegion(jcharArray array,
1744+ jsize start, jsize len, jchar *buf) {
1745+ functions->GetCharArrayRegion(this,array,start,len,buf);
1746+ }
1747+ void GetShortArrayRegion(jshortArray array,
1748+ jsize start, jsize len, jshort *buf) {
1749+ functions->GetShortArrayRegion(this,array,start,len,buf);
1750+ }
1751+ void GetIntArrayRegion(jintArray array,
1752+ jsize start, jsize len, jint *buf) {
1753+ functions->GetIntArrayRegion(this,array,start,len,buf);
1754+ }
1755+ void GetLongArrayRegion(jlongArray array,
1756+ jsize start, jsize len, jlong *buf) {
1757+ functions->GetLongArrayRegion(this,array,start,len,buf);
1758+ }
1759+ void GetFloatArrayRegion(jfloatArray array,
1760+ jsize start, jsize len, jfloat *buf) {
1761+ functions->GetFloatArrayRegion(this,array,start,len,buf);
1762+ }
1763+ void GetDoubleArrayRegion(jdoubleArray array,
1764+ jsize start, jsize len, jdouble *buf) {
1765+ functions->GetDoubleArrayRegion(this,array,start,len,buf);
1766+ }
1767+
1768+ void SetBooleanArrayRegion(jbooleanArray array, jsize start, jsize len,
1769+ const jboolean *buf) {
1770+ functions->SetBooleanArrayRegion(this,array,start,len,buf);
1771+ }
1772+ void SetByteArrayRegion(jbyteArray array, jsize start, jsize len,
1773+ const jbyte *buf) {
1774+ functions->SetByteArrayRegion(this,array,start,len,buf);
1775+ }
1776+ void SetCharArrayRegion(jcharArray array, jsize start, jsize len,
1777+ const jchar *buf) {
1778+ functions->SetCharArrayRegion(this,array,start,len,buf);
1779+ }
1780+ void SetShortArrayRegion(jshortArray array, jsize start, jsize len,
1781+ const jshort *buf) {
1782+ functions->SetShortArrayRegion(this,array,start,len,buf);
1783+ }
1784+ void SetIntArrayRegion(jintArray array, jsize start, jsize len,
1785+ const jint *buf) {
1786+ functions->SetIntArrayRegion(this,array,start,len,buf);
1787+ }
1788+ void SetLongArrayRegion(jlongArray array, jsize start, jsize len,
1789+ const jlong *buf) {
1790+ functions->SetLongArrayRegion(this,array,start,len,buf);
1791+ }
1792+ void SetFloatArrayRegion(jfloatArray array, jsize start, jsize len,
1793+ const jfloat *buf) {
1794+ functions->SetFloatArrayRegion(this,array,start,len,buf);
1795+ }
1796+ void SetDoubleArrayRegion(jdoubleArray array, jsize start, jsize len,
1797+ const jdouble *buf) {
1798+ functions->SetDoubleArrayRegion(this,array,start,len,buf);
1799+ }
1800+
1801+ jint RegisterNatives(jclass clazz, const JNINativeMethod *methods,
1802+ jint nMethods) {
1803+ return functions->RegisterNatives(this,clazz,methods,nMethods);
1804+ }
1805+ jint UnregisterNatives(jclass clazz) {
1806+ return functions->UnregisterNatives(this,clazz);
1807+ }
1808+
1809+ jint MonitorEnter(jobject obj) {
1810+ return functions->MonitorEnter(this,obj);
1811+ }
1812+ jint MonitorExit(jobject obj) {
1813+ return functions->MonitorExit(this,obj);
1814+ }
1815+
1816+ jint GetJavaVM(JavaVM **vm) {
1817+ return functions->GetJavaVM(this,vm);
1818+ }
1819+
1820+ void GetStringRegion(jstring str, jsize start, jsize len, jchar *buf) {
1821+ functions->GetStringRegion(this,str,start,len,buf);
1822+ }
1823+ void GetStringUTFRegion(jstring str, jsize start, jsize len, char *buf) {
1824+ functions->GetStringUTFRegion(this,str,start,len,buf);
1825+ }
1826+
1827+ void * GetPrimitiveArrayCritical(jarray array, jboolean *isCopy) {
1828+ return functions->GetPrimitiveArrayCritical(this,array,isCopy);
1829+ }
1830+ void ReleasePrimitiveArrayCritical(jarray array, void *carray, jint mode) {
1831+ functions->ReleasePrimitiveArrayCritical(this,array,carray,mode);
1832+ }
1833+
1834+ const jchar * GetStringCritical(jstring string, jboolean *isCopy) {
1835+ return functions->GetStringCritical(this,string,isCopy);
1836+ }
1837+ void ReleaseStringCritical(jstring string, const jchar *cstring) {
1838+ functions->ReleaseStringCritical(this,string,cstring);
1839+ }
1840+
1841+ jweak NewWeakGlobalRef(jobject obj) {
1842+ return functions->NewWeakGlobalRef(this,obj);
1843+ }
1844+ void DeleteWeakGlobalRef(jweak ref) {
1845+ functions->DeleteWeakGlobalRef(this,ref);
1846+ }
1847+
1848+ jboolean ExceptionCheck() {
1849+ return functions->ExceptionCheck(this);
1850+ }
1851+
1852+ jobject NewDirectByteBuffer(void* address, jlong capacity) {
1853+ return functions->NewDirectByteBuffer(this, address, capacity);
1854+ }
1855+ void* GetDirectBufferAddress(jobject buf) {
1856+ return functions->GetDirectBufferAddress(this, buf);
1857+ }
1858+ jlong GetDirectBufferCapacity(jobject buf) {
1859+ return functions->GetDirectBufferCapacity(this, buf);
1860+ }
1861+ jobjectRefType GetObjectRefType(jobject obj) {
1862+ return functions->GetObjectRefType(this, obj);
1863+ }
1864+
1865+ /* Module Features */
1866+
1867+ jobject GetModule(jclass clazz) {
1868+ return functions->GetModule(this, clazz);
1869+ }
1870+
1871+#endif /* __cplusplus */
1872+};
1873+
1874+typedef struct JavaVMOption {
1875+ char *optionString;
1876+ void *extraInfo;
1877+} JavaVMOption;
1878+
1879+typedef struct JavaVMInitArgs {
1880+ jint version;
1881+
1882+ jint nOptions;
1883+ JavaVMOption *options;
1884+ jboolean ignoreUnrecognized;
1885+} JavaVMInitArgs;
1886+
1887+typedef struct JavaVMAttachArgs {
1888+ jint version;
1889+
1890+ char *name;
1891+ jobject group;
1892+} JavaVMAttachArgs;
1893+
1894+/* These will be VM-specific. */
1895+
1896+#define JDK1_2
1897+#define JDK1_4
1898+
1899+/* End VM-specific. */
1900+
1901+struct JNIInvokeInterface_ {
1902+ void *reserved0;
1903+ void *reserved1;
1904+ void *reserved2;
1905+
1906+ jint (JNICALL *DestroyJavaVM)(JavaVM *vm);
1907+
1908+ jint (JNICALL *AttachCurrentThread)(JavaVM *vm, void **penv, void *args);
1909+
1910+ jint (JNICALL *DetachCurrentThread)(JavaVM *vm);
1911+
1912+ jint (JNICALL *GetEnv)(JavaVM *vm, void **penv, jint version);
1913+
1914+ jint (JNICALL *AttachCurrentThreadAsDaemon)(JavaVM *vm, void **penv, void *args);
1915+};
1916+
1917+struct JavaVM_ {
1918+ const struct JNIInvokeInterface_ *functions;
1919+#ifdef __cplusplus
1920+
1921+ jint DestroyJavaVM() {
1922+ return functions->DestroyJavaVM(this);
1923+ }
1924+ jint AttachCurrentThread(void **penv, void *args) {
1925+ return functions->AttachCurrentThread(this, penv, args);
1926+ }
1927+ jint DetachCurrentThread() {
1928+ return functions->DetachCurrentThread(this);
1929+ }
1930+
1931+ jint GetEnv(void **penv, jint version) {
1932+ return functions->GetEnv(this, penv, version);
1933+ }
1934+ jint AttachCurrentThreadAsDaemon(void **penv, void *args) {
1935+ return functions->AttachCurrentThreadAsDaemon(this, penv, args);
1936+ }
1937+#endif
1938+};
1939+
1940+#ifdef _JNI_IMPLEMENTATION_
1941+#define _JNI_IMPORT_OR_EXPORT_ JNIEXPORT
1942+#else
1943+#define _JNI_IMPORT_OR_EXPORT_ JNIIMPORT
1944+#endif
1945+_JNI_IMPORT_OR_EXPORT_ jint JNICALL
1946+JNI_GetDefaultJavaVMInitArgs(void *args);
1947+
1948+_JNI_IMPORT_OR_EXPORT_ jint JNICALL
1949+JNI_CreateJavaVM(JavaVM **pvm, void **penv, void *args);
1950+
1951+_JNI_IMPORT_OR_EXPORT_ jint JNICALL
1952+JNI_GetCreatedJavaVMs(JavaVM **, jsize, jsize *);
1953+
1954+/* Defined by native libraries. */
1955+JNIEXPORT jint JNICALL
1956+JNI_OnLoad(JavaVM *vm, void *reserved);
1957+
1958+JNIEXPORT void JNICALL
1959+JNI_OnUnload(JavaVM *vm, void *reserved);
1960+
1961+#define JNI_VERSION_1_1 0x00010001
1962+#define JNI_VERSION_1_2 0x00010002
1963+#define JNI_VERSION_1_4 0x00010004
1964+#define JNI_VERSION_1_6 0x00010006
1965+#define JNI_VERSION_1_8 0x00010008
1966+#define JNI_VERSION_9 0x00090000
1967+#define JNI_VERSION_10 0x000a0000
1968+
1969+#ifdef __cplusplus
1970+} /* extern "C" */
1971+#endif /* __cplusplus */
1972+
1973+#endif /* !_JAVASOFT_JNI_H_ */
--- /dev/null
+++ b/extensions/gdx-bullet/jni/jni-headers/linux/jawt_md.h
@@ -0,0 +1,60 @@
1+/*
2+ * Copyright (c) 1999, 2001, Oracle and/or its affiliates. All rights reserved.
3+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4+ *
5+ * This code is free software; you can redistribute it and/or modify it
6+ * under the terms of the GNU General Public License version 2 only, as
7+ * published by the Free Software Foundation. Oracle designates this
8+ * particular file as subject to the "Classpath" exception as provided
9+ * by Oracle in the LICENSE file that accompanied this code.
10+ *
11+ * This code is distributed in the hope that it will be useful, but WITHOUT
12+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14+ * version 2 for more details (a copy is included in the LICENSE file that
15+ * accompanied this code).
16+ *
17+ * You should have received a copy of the GNU General Public License version
18+ * 2 along with this work; if not, write to the Free Software Foundation,
19+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20+ *
21+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22+ * or visit www.oracle.com if you need additional information or have any
23+ * questions.
24+ */
25+
26+#ifndef _JAVASOFT_JAWT_MD_H_
27+#define _JAVASOFT_JAWT_MD_H_
28+
29+#include <X11/Xlib.h>
30+#include <X11/Xutil.h>
31+#include "jawt.h"
32+
33+#ifdef __cplusplus
34+extern "C" {
35+#endif
36+
37+/*
38+ * X11-specific declarations for AWT native interface.
39+ * See notes in jawt.h for an example of use.
40+ */
41+typedef struct jawt_X11DrawingSurfaceInfo {
42+ Drawable drawable;
43+ Display* display;
44+ VisualID visualID;
45+ Colormap colormapID;
46+ int depth;
47+ /*
48+ * Since 1.4
49+ * Returns a pixel value from a set of RGB values.
50+ * This is useful for paletted color (256 color) modes.
51+ */
52+ int (JNICALL *GetAWTColor)(JAWT_DrawingSurface* ds,
53+ int r, int g, int b);
54+} JAWT_X11DrawingSurfaceInfo;
55+
56+#ifdef __cplusplus
57+}
58+#endif
59+
60+#endif /* !_JAVASOFT_JAWT_MD_H_ */
--- /dev/null
+++ b/extensions/gdx-bullet/jni/jni-headers/linux/jni_md.h
@@ -0,0 +1,56 @@
1+/*
2+ * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
3+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4+ *
5+ * This code is free software; you can redistribute it and/or modify it
6+ * under the terms of the GNU General Public License version 2 only, as
7+ * published by the Free Software Foundation. Oracle designates this
8+ * particular file as subject to the "Classpath" exception as provided
9+ * by Oracle in the LICENSE file that accompanied this code.
10+ *
11+ * This code is distributed in the hope that it will be useful, but WITHOUT
12+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14+ * version 2 for more details (a copy is included in the LICENSE file that
15+ * accompanied this code).
16+ *
17+ * You should have received a copy of the GNU General Public License version
18+ * 2 along with this work; if not, write to the Free Software Foundation,
19+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20+ *
21+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22+ * or visit www.oracle.com if you need additional information or have any
23+ * questions.
24+ */
25+
26+#ifndef _JAVASOFT_JNI_MD_H_
27+#define _JAVASOFT_JNI_MD_H_
28+
29+#ifndef __has_attribute
30+ #define __has_attribute(x) 0
31+#endif
32+#if (defined(__GNUC__) && ((__GNUC__ > 4) || (__GNUC__ == 4) && (__GNUC_MINOR__ > 2))) || __has_attribute(visibility)
33+ #ifdef ARM
34+ #define JNIEXPORT __attribute__((externally_visible,visibility("default")))
35+ #define JNIIMPORT __attribute__((externally_visible,visibility("default")))
36+ #else
37+ #define JNIEXPORT __attribute__((visibility("default")))
38+ #define JNIIMPORT __attribute__((visibility("default")))
39+ #endif
40+#else
41+ #define JNIEXPORT
42+ #define JNIIMPORT
43+#endif
44+
45+#define JNICALL
46+
47+typedef int jint;
48+#ifdef _LP64
49+typedef long jlong;
50+#else
51+typedef long long jlong;
52+#endif
53+
54+typedef signed char jbyte;
55+
56+#endif /* !_JAVASOFT_JNI_MD_H_ */
--- /dev/null
+++ b/extensions/gdx-bullet/jni/jni-headers/mac/jni_md.h
@@ -0,0 +1,56 @@
1+/*
2+ * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
3+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4+ *
5+ * This code is free software; you can redistribute it and/or modify it
6+ * under the terms of the GNU General Public License version 2 only, as
7+ * published by the Free Software Foundation. Oracle designates this
8+ * particular file as subject to the "Classpath" exception as provided
9+ * by Oracle in the LICENSE file that accompanied this code.
10+ *
11+ * This code is distributed in the hope that it will be useful, but WITHOUT
12+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14+ * version 2 for more details (a copy is included in the LICENSE file that
15+ * accompanied this code).
16+ *
17+ * You should have received a copy of the GNU General Public License version
18+ * 2 along with this work; if not, write to the Free Software Foundation,
19+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20+ *
21+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22+ * or visit www.oracle.com if you need additional information or have any
23+ * questions.
24+ */
25+
26+#ifndef _JAVASOFT_JNI_MD_H_
27+#define _JAVASOFT_JNI_MD_H_
28+
29+#ifndef __has_attribute
30+ #define __has_attribute(x) 0
31+#endif
32+#if (defined(__GNUC__) && ((__GNUC__ > 4) || (__GNUC__ == 4) && (__GNUC_MINOR__ > 2))) || __has_attribute(visibility)
33+ #ifdef ARM
34+ #define JNIEXPORT __attribute__((externally_visible,visibility("default")))
35+ #define JNIIMPORT __attribute__((externally_visible,visibility("default")))
36+ #else
37+ #define JNIEXPORT __attribute__((visibility("default")))
38+ #define JNIIMPORT __attribute__((visibility("default")))
39+ #endif
40+#else
41+ #define JNIEXPORT
42+ #define JNIIMPORT
43+#endif
44+
45+#define JNICALL
46+
47+typedef int jint;
48+#ifdef _LP64
49+typedef long jlong;
50+#else
51+typedef long long jlong;
52+#endif
53+
54+typedef signed char jbyte;
55+
56+#endif /* !_JAVASOFT_JNI_MD_H_ */
--- /dev/null
+++ b/extensions/gdx-bullet/jni/jni-headers/win32/jawt_md.h
@@ -0,0 +1,59 @@
1+/*
2+ * Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved.
3+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4+ *
5+ * This code is free software; you can redistribute it and/or modify it
6+ * under the terms of the GNU General Public License version 2 only, as
7+ * published by the Free Software Foundation. Oracle designates this
8+ * particular file as subject to the "Classpath" exception as provided
9+ * by Oracle in the LICENSE file that accompanied this code.
10+ *
11+ * This code is distributed in the hope that it will be useful, but WITHOUT
12+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14+ * version 2 for more details (a copy is included in the LICENSE file that
15+ * accompanied this code).
16+ *
17+ * You should have received a copy of the GNU General Public License version
18+ * 2 along with this work; if not, write to the Free Software Foundation,
19+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20+ *
21+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22+ * or visit www.oracle.com if you need additional information or have any
23+ * questions.
24+ */
25+
26+#ifndef _JAVASOFT_JAWT_MD_H_
27+#define _JAVASOFT_JAWT_MD_H_
28+
29+#include <windows.h>
30+#include "jawt.h"
31+
32+#ifdef __cplusplus
33+extern "C" {
34+#endif
35+
36+/*
37+ * Win32-specific declarations for AWT native interface.
38+ * See notes in jawt.h for an example of use.
39+ */
40+typedef struct jawt_Win32DrawingSurfaceInfo {
41+ /* Native window, DDB, or DIB handle */
42+ union {
43+ HWND hwnd;
44+ HBITMAP hbitmap;
45+ void* pbits;
46+ };
47+ /*
48+ * This HDC should always be used instead of the HDC returned from
49+ * BeginPaint() or any calls to GetDC().
50+ */
51+ HDC hdc;
52+ HPALETTE hpalette;
53+} JAWT_Win32DrawingSurfaceInfo;
54+
55+#ifdef __cplusplus
56+}
57+#endif
58+
59+#endif /* !_JAVASOFT_JAWT_MD_H_ */
--- /dev/null
+++ b/extensions/gdx-bullet/jni/jni-headers/win32/jni_md.h
@@ -0,0 +1,38 @@
1+/*
2+ * Copyright (c) 1996, 1998, Oracle and/or its affiliates. All rights reserved.
3+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4+ *
5+ * This code is free software; you can redistribute it and/or modify it
6+ * under the terms of the GNU General Public License version 2 only, as
7+ * published by the Free Software Foundation. Oracle designates this
8+ * particular file as subject to the "Classpath" exception as provided
9+ * by Oracle in the LICENSE file that accompanied this code.
10+ *
11+ * This code is distributed in the hope that it will be useful, but WITHOUT
12+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14+ * version 2 for more details (a copy is included in the LICENSE file that
15+ * accompanied this code).
16+ *
17+ * You should have received a copy of the GNU General Public License version
18+ * 2 along with this work; if not, write to the Free Software Foundation,
19+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20+ *
21+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22+ * or visit www.oracle.com if you need additional information or have any
23+ * questions.
24+ */
25+
26+#ifndef _JAVASOFT_JNI_MD_H_
27+#define _JAVASOFT_JNI_MD_H_
28+
29+#define JNIEXPORT __declspec(dllexport)
30+#define JNIIMPORT __declspec(dllimport)
31+#define JNICALL __stdcall
32+
33+// 'long' is always 32 bit on windows so this matches what jdk expects
34+typedef long jint;
35+typedef __int64 jlong;
36+typedef signed char jbyte;
37+
38+#endif /* !_JAVASOFT_JNI_MD_H_ */
--- /dev/null
+++ b/extensions/gdx-bullet/jni/memcpy_wrap.c
@@ -0,0 +1,18 @@
1+#ifndef __ANDROID__
2+#ifdef __linux__
3+#ifdef __x86_64__
4+
5+#include <stdio.h>
6+#include <stdlib.h>
7+#include <string.h>
8+
9+__asm__(".symver memcpy,memcpy@GLIBC_2.2.5");
10+
11+void *__wrap_memcpy(void * destination, const void * source, size_t num)
12+{
13+ return memcpy(destination, source, num);
14+}
15+
16+#endif
17+#endif
18+#endif
\ No newline at end of file
--- a/extensions/gdx-freetype/build.gradle
+++ b/extensions/gdx-freetype/build.gradle
@@ -15,7 +15,7 @@
1515 ******************************************************************************/
1616
1717 dependencies {
18- compile project(":gdx")
18+ api project(":gdx")
1919 }
2020
2121 apply plugin: "com.badlogicgames.gdx.gdx-jnigen"
--- /dev/null
+++ b/extensions/gdx-freetype/jni/Info.plist
@@ -0,0 +1,51 @@
1+<?xml version="1.0" encoding="UTF-8"?>
2+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+<plist version="1.0">
4+<dict>
5+ <key>BuildMachineOSBuild</key>
6+ <string>19H1922</string>
7+ <key>CFBundleDevelopmentRegion</key>
8+ <string>en</string>
9+ <key>CFBundleExecutable</key>
10+ <string>%libName%</string>
11+ <key>CFBundleIdentifier</key>
12+ <string>%identifier%</string>
13+ <key>CFBundleInfoDictionaryVersion</key>
14+ <string>6.0</string>
15+ <key>CFBundleName</key>
16+ <string>%libName%</string>
17+ <key>CFBundlePackageType</key>
18+ <string>FMWK</string>
19+ <key>CFBundleShortVersionString</key>
20+ <string>1.0</string>
21+ <key>CFBundleSupportedPlatforms</key>
22+ <array>
23+ <string>iPhoneOS</string>
24+ </array>
25+ <key>CFBundleVersion</key>
26+ <string>1</string>
27+ <key>DTCompiler</key>
28+ <string>com.apple.compilers.llvm.clang.1_0</string>
29+ <key>DTPlatformBuild</key>
30+ <string>18D46</string>
31+ <key>DTPlatformName</key>
32+ <string>%platform%</string>
33+ <key>DTPlatformVersion</key>
34+ <string>14.4</string>
35+ <key>DTSDKBuild</key>
36+ <string>18D46</string>
37+ <key>DTSDKName</key>
38+ <string>iphoneos14.4</string>
39+ <key>DTXcode</key>
40+ <string>1240</string>
41+ <key>DTXcodeBuild</key>
42+ <string>12D4e</string>
43+ <key>MinimumOSVersion</key>
44+ <string>%minIOSVersion%</string>
45+ <key>UIDeviceFamily</key>
46+ <array>
47+ <integer>1</integer>
48+ <integer>2</integer>
49+ </array>
50+</dict>
51+</plist>
--- a/extensions/gdx-tools/build.gradle
+++ b/extensions/gdx-tools/build.gradle
@@ -15,11 +15,11 @@
1515 ******************************************************************************/
1616
1717 dependencies {
18- compile project(":gdx")
19- compile project(":backends:gdx-backend-lwjgl")
20- compile project(":extensions:gdx-freetype")
21- compile project(":backends:gdx-backend-headless")
22- compile testnatives.desktop
18+ api project(":gdx")
19+ api project(":backends:gdx-backend-lwjgl")
20+ api project(":extensions:gdx-freetype")
21+ api project(":backends:gdx-backend-headless")
22+ api testnatives.desktop
2323 }
2424
2525 sourceSets.main.resources.srcDirs = ["assets"]
--- a/gdx/build.gradle
+++ b/gdx/build.gradle
@@ -14,10 +14,10 @@
1414 * limitations under the License.
1515 ******************************************************************************/
1616
17-apply plugin: "java"
17+apply plugin: "java-library"
1818
19-sourceCompatibility = 1.7
20-targetCompatibility = 1.7
19+sourceCompatibility = 1.8
20+targetCompatibility = 1.8
2121
2222 sourceSets.main.java.srcDirs = ["src"]
2323 sourceSets.main.resources.srcDirs = ["res"]
@@ -28,9 +28,17 @@ compileJava {
2828 options.incremental = true
2929 }
3030
31+jar {
32+ duplicatesStrategy = DuplicatesStrategy.EXCLUDE
33+}
34+
3135 dependencies {
32- testCompile libraries.junit
33- compile "com.badlogicgames.gdx:gdx-jnigen-loader:2.2.0"
36+ testImplementation libraries.junit
37+ api files("/Users/sebastian/Downloads/gdx-jnigen/gdx-jnigen/build/libs/gdx-jnigen-2.4.2-SNAPSHOT-all.jar")
38+ api files("/Users/sebastian/Downloads/gdx-jnigen/gdx-jnigen-gradle/build/libs/gdx-jnigen-2.4.2-SNAPSHOT-all.jar")
39+ api files("/Users/sebastian/Downloads/gdx-jnigen/gdx-jnigen-loader/build/libs/gdx-jnigen-loader-2.4.2-SNAPSHOT-all.jar")
40+ api "com.badlogicgames.gdx:gdx-jnigen-loader:2.3.1"
41+// api files("/Users/sebastian/Downloads/gdx-jnigen/out/artifacts/gdx_jnigen_jar/gdx-jnigen.jar")
3442 }
3543
3644 test {
@@ -39,6 +47,8 @@ test {
3947 }
4048 }
4149
50+processResources.duplicatesStrategy = DuplicatesStrategy.EXCLUDE
51+
4252 // Workaround needed for IDEA to have resources on classpath when running tests (like gdx-tests-lwjgl3)
4353 task copyIdeaResources(type: Copy) {
4454 from "${projectDir}/res"
@@ -47,6 +57,7 @@ task copyIdeaResources(type: Copy) {
4757 processResources.dependsOn copyIdeaResources
4858
4959 apply plugin: "com.badlogicgames.gdx.gdx-jnigen"
60+
5061 jnigen {
5162 sharedLibName = "gdx"
5263 temporaryDir = "../target/native"
--- /dev/null
+++ b/gdx/jni/Info.plist
@@ -0,0 +1,51 @@
1+<?xml version="1.0" encoding="UTF-8"?>
2+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+<plist version="1.0">
4+<dict>
5+ <key>BuildMachineOSBuild</key>
6+ <string>19H1922</string>
7+ <key>CFBundleDevelopmentRegion</key>
8+ <string>en</string>
9+ <key>CFBundleExecutable</key>
10+ <string>%libName%</string>
11+ <key>CFBundleIdentifier</key>
12+ <string>%identifier%</string>
13+ <key>CFBundleInfoDictionaryVersion</key>
14+ <string>6.0</string>
15+ <key>CFBundleName</key>
16+ <string>%libName%</string>
17+ <key>CFBundlePackageType</key>
18+ <string>FMWK</string>
19+ <key>CFBundleShortVersionString</key>
20+ <string>1.0</string>
21+ <key>CFBundleSupportedPlatforms</key>
22+ <array>
23+ <string>iPhoneOS</string>
24+ </array>
25+ <key>CFBundleVersion</key>
26+ <string>1</string>
27+ <key>DTCompiler</key>
28+ <string>com.apple.compilers.llvm.clang.1_0</string>
29+ <key>DTPlatformBuild</key>
30+ <string>18D46</string>
31+ <key>DTPlatformName</key>
32+ <string>%platform%</string>
33+ <key>DTPlatformVersion</key>
34+ <string>14.4</string>
35+ <key>DTSDKBuild</key>
36+ <string>18D46</string>
37+ <key>DTSDKName</key>
38+ <string>iphoneos14.4</string>
39+ <key>DTXcode</key>
40+ <string>1240</string>
41+ <key>DTXcodeBuild</key>
42+ <string>12D4e</string>
43+ <key>MinimumOSVersion</key>
44+ <string>%minIOSVersion%</string>
45+ <key>UIDeviceFamily</key>
46+ <array>
47+ <integer>1</integer>
48+ <integer>2</integer>
49+ </array>
50+</dict>
51+</plist>
--- a/gdx/src/com/badlogic/gdx/utils/GdxNativesLoader.java
+++ b/gdx/src/com/badlogic/gdx/utils/GdxNativesLoader.java
@@ -16,6 +16,8 @@
1616
1717 package com.badlogic.gdx.utils;
1818
19+import com.badlogic.gdx.utils.SharedLibraryLoader;
20+
1921 public class GdxNativesLoader {
2022 static public boolean disableNativesLoading = false;
2123
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,5 @@
1-#Fri Sep 30 05:10:25 BST 2016
21 distributionBase=GRADLE_USER_HOME
32 distributionPath=wrapper/dists
3+distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
44 zipStoreBase=GRADLE_USER_HOME
55 zipStorePath=wrapper/dists
6-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
--- a/settings.gradle
+++ b/settings.gradle
@@ -35,7 +35,7 @@ include ":extensions:gdx-tools"
3535 include ":tests"
3636 include ":tests:gdx-tests"
3737 include ":tests:gdx-tests-android"
38-include ":tests:gdx-tests-gwt"
38+//include ":tests:gdx-tests-gwt"
3939 include ":tests:gdx-tests-iosrobovm"
4040 include ":tests:gdx-tests-lwjgl"
4141 include ":tests:gdx-tests-lwjgl3"
--- a/tests/build.gradle
+++ b/tests/build.gradle
@@ -17,8 +17,8 @@
1717 configure(subprojects - project(":tests:gdx-tests-android")) {
1818 apply plugin: "java"
1919
20- sourceCompatibility = 1.7
21- targetCompatibility = 1.7
20+ sourceCompatibility = 1.8
21+ targetCompatibility = 1.8
2222 sourceSets.main.java.srcDirs = ["src"]
2323 sourceSets.main.resources.srcDirs = ["res"]
2424
--- a/tests/gdx-tests-android/build.gradle
+++ b/tests/gdx-tests-android/build.gradle
@@ -24,14 +24,14 @@ apply plugin: "com.android.application"
2424 apply from: "obb.gradle"
2525
2626 dependencies {
27- implementation project(":tests:gdx-tests")
28- implementation project(":gdx")
29- implementation project(":extensions:gdx-box2d-parent:gdx-box2d")
30- implementation project(":extensions:gdx-bullet")
31- implementation project(":extensions:gdx-freetype")
32- implementation project(":backends:gdx-backend-android")
33- implementation libraries.android
34- implementation "androidx.multidex:multidex:${versions.multiDex}"
27+ api project(":tests:gdx-tests")
28+ api project(":gdx")
29+ api project(":extensions:gdx-box2d-parent:gdx-box2d")
30+ api project(":extensions:gdx-bullet")
31+ api project(":extensions:gdx-freetype")
32+ api project(":backends:gdx-backend-android")
33+ api libraries.android
34+ api "androidx.multidex:multidex:${versions.multiDex}"
3535 }
3636
3737 android {
--- a/tests/gdx-tests-gwt/build.gradle
+++ b/tests/gdx-tests-gwt/build.gradle
@@ -39,9 +39,9 @@ gretty.contextPath = "/"
3939 gretty.portPropertiesFileName = "TEMP_PORTS.properties"
4040
4141 dependencies {
42- compile project(":tests:gdx-tests")
43- compile project(":backends:gdx-backends-gwt")
44- compile project(":extensions:gdx-box2d-parent:gdx-box2d-gwt")
42+ api project(":tests:gdx-tests")
43+ api project(":backends:gdx-backends-gwt")
44+ api project(":extensions:gdx-box2d-parent:gdx-box2d-gwt")
4545 }
4646
4747 gwt {
--- a/tests/gdx-tests-iosrobovm/build.gradle
+++ b/tests/gdx-tests-iosrobovm/build.gradle
@@ -22,13 +22,13 @@ buildscript {
2222
2323 apply plugin: "robovm"
2424
25-sourceCompatibility = '1.7'
26-targetCompatibility = '1.7'
25+sourceCompatibility = '1.8'
26+targetCompatibility = '1.8'
2727
2828 dependencies {
29- compile project(":tests:gdx-tests")
30- compile project(":backends:gdx-backend-robovm")
31- compile testnatives.ios
29+ api project(":tests:gdx-tests")
30+ api project(":backends:gdx-backend-robovm")
31+ api testnatives.ios
3232 }
3333
3434 ext {
--- a/tests/gdx-tests-lwjgl/build.gradle
+++ b/tests/gdx-tests-lwjgl/build.gradle
@@ -20,9 +20,9 @@ ext {
2020 sourceSets.main.resources.srcDirs = ["../gdx-tests-android/assets"]
2121
2222 dependencies {
23- compile project(":tests:gdx-tests")
24- compile project(":backends:gdx-backend-lwjgl")
25- compile testnatives.desktop
23+ api project(":tests:gdx-tests")
24+ api project(":backends:gdx-backend-lwjgl")
25+ api testnatives.desktop
2626 }
2727
2828 task launchTestsLwjgl (dependsOn: classes, type: JavaExec) {
--- a/tests/gdx-tests-lwjgl3/build.gradle
+++ b/tests/gdx-tests-lwjgl3/build.gradle
@@ -23,9 +23,9 @@ sourceCompatibility = 1.8
2323 targetCompatibility = 1.8
2424
2525 dependencies {
26- compile project(":tests:gdx-tests")
27- compile project(":backends:gdx-backend-lwjgl3")
28- compile testnatives.desktop
26+ api project(":tests:gdx-tests")
27+ api project(":backends:gdx-backend-lwjgl3")
28+ api testnatives.desktop
2929 }
3030
3131 task launchTestsLwjgl3 (dependsOn: classes, type: JavaExec) {
--- a/tests/gdx-tests/build.gradle
+++ b/tests/gdx-tests/build.gradle
@@ -15,9 +15,9 @@
1515 ******************************************************************************/
1616
1717 dependencies {
18- compile project(":gdx")
19- compile project(":extensions:gdx-box2d-parent:gdx-box2d")
20- compile project(":extensions:gdx-bullet")
21- compile project(":extensions:gdx-freetype")
18+ api project(":gdx")
19+ api project(":extensions:gdx-box2d-parent:gdx-box2d")
20+ api project(":extensions:gdx-bullet")
21+ api project(":extensions:gdx-freetype")
2222 compileOnly project(":extensions:gdx-tools")
2323 }