Ver código fonte

Merge remote-tracking branch 'github/master' into master-original

javasabr 8 anos atrás
pai
commit
13eec17ddd

+ 2 - 0
.gitignore

@@ -14,10 +14,12 @@
 *.jnilib
 *.dylib
 *.iml
+.gradletasknamecache
 .DS_Store
 /jme3-core/src/main/resources/com/jme3/system/version.properties
 /jme3-*/build/
 /jme3-bullet-native/bullet.zip
+/jme3-bullet-native/bullet3.zip
 /jme3-bullet-native/bullet-2.82-r2704/
 /jme3-bullet-native/bullet3-2.83.7/
 /jme3-android-native/openal-soft/

+ 36 - 17
.travis.yml

@@ -1,20 +1,50 @@
 language: java
 sudo: false
 
-jdk:
-  - oraclejdk8
+branches:
+  only:
+  - master
+  - v3.1
+
+matrix:
+  include:
+  # - os: linux
+  #   jdk: oraclejdk8
+  #   env: UPLOAD=true UPLOAD_NATIVE=true
+  # - os: linux
+  #   jdk: openjdk7
+  - os: osx
+    env: UPLOAD_NATIVE=true
 
 addons:
-  ssh_known_hosts: updates.jmonkeyengine.org
+  ssh_known_hosts: github.com
+  apt:
+    packages:
+    - gcc-multilib
+    - g++-multilib
+
+before_install:
+  - '[ -n "$UPLOAD" ] && git fetch --unshallow || :'
 
 before_cache:
-  - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
- 
+  - rm -f  $HOME/.gradle/caches/modules-2/modules-2.lock
+  - rm -fr $HOME/.gradle/caches/*/plugin-resolution/
+
 cache:
   directories:
     - $HOME/.gradle/caches/
     - $HOME/.gradle/wrapper/
 
+install:
+  - '[ -n "$UPLOAD_NATIVE" ] && ./gradlew -PbuildNativeProjects=true assemble || ./gradlew assemble'
+
+script:
+  - ./gradlew check
+
+after_success:
+  - '[ "$TRAVIS_PULL_REQUEST" == "false" ] && [ -n "$UPLOAD_NATIVE" ] && ./private/upload_native.sh || :'
+  - '[ -n "$TRAVIS_TAG" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ] && [ -n "$UPLOAD" ] && ./gradlew bintrayUpload || :'
+
 notifications:
   slack:
     on_success: change
@@ -22,12 +52,6 @@ notifications:
     rooms:
       secure: "PWEk4+VL986c3gAjWp12nqyifvxCjBqKoESG9d7zWh1uiTLadTHhZJRMdsye36FCpz/c/Jt7zCRO/5y7FaubQptnRrkrRfjp5f99MJRzQVXnUAM+y385qVkXKRKd/PLpM7XPm4AvjvxHCyvzX2wamRvul/TekaXKB9Ti5FCN87s="
 
-install:
-  - ./gradlew assemble
-
-script:
-  - ./gradlew check
-
 before_deploy:
   - ./gradlew createZipDistribution
   - export RELEASE_DIST=$(ls build/distributions/*.zip)
@@ -43,9 +67,6 @@ deploy:
     repo: jMonkeyEngine/jmonkeyengine
     tags: true
 
-before_install:
-  - git fetch --unshallow
-  - "[ $TRAVIS_PULL_REQUEST == 'false' ] && openssl aes-256-cbc -K $encrypted_a1949b55824a_key -iv $encrypted_a1949b55824a_iv -in private/www-updater.key.enc -out private/www-updater.key -d || :"
 
 # before_install:
   # required libs for android build tools
@@ -57,6 +78,4 @@ before_install:
   # 7z x ndk.bin -y > /dev/null
   # export ANDROID_NDK=`pwd`/android-ndk-r10c
 
-after_success:
-  - '[ "$TRAVIS_BRANCH" == "master" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ] && ./gradlew uploadArchives || :'
-  - '[ -n "$TRAVIS_TAG" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ] && ./gradlew uploadArchives bintrayUpload || :'
+

+ 51 - 0
appveyor.yml

@@ -0,0 +1,51 @@
+version: 1.0.{build}.{branch}
+
+branches:
+  only:
+  - master
+
+only_commits:
+  files:
+    - jme3-bullet-native/
+
+skip_tags: true
+
+max_jobs: 1
+
+clone_depth: 1
+
+image: Visual Studio 2013
+
+environment:
+  encrypted_f0a0b284e2e8_iv:
+    secure: aImQXs4g7zMXm1nWRvlh2wPK1UQvozS1fOVNthpyoEDFZ2FvBSdXqh5NPbGh44+F
+  encrypted_f0a0b284e2e8_key:
+    secure: Ek2lqC2e19qQDRRdlvnYyLFBq3TNj6YwKTAPuJ2VElJsxi9lQg+9ZP+VbP4kbHTx6Zaa++vtmOuxLZL7gdILrEEPa1Jix2BBLBfcxBUxe6w=
+
+install:
+  - cmd: del C:\Users\appveyor\.gradle\caches\modules-2\modules-2.lock
+
+build_script:
+  - cmd: gradlew.bat -PbuildNativeProjects=true :jme3-bullet-native:assemble
+
+cache:
+- C:\Users\appveyor\.gradle\caches
+- C:\Users\appveyor\.gradle\wrapper
+- jme3-bullet-native\bullet3.zip
+
+test: off
+deploy: off
+
+on_success:
+- cmd: >-
+    openssl aes-256-cbc -K %encrypted_f0a0b284e2e8_key% -iv %encrypted_f0a0b284e2e8_iv% -in private\key.enc -out c:\users\appveyor\.ssh\id_rsa -d
+
+    git checkout -q %APPVEYOR_REPO_BRANCH%
+
+    git add -- jme3-bullet-native/libs/native/windows/
+
+    git commit -m "[ci skip] bullet: update windows natives"
+
+    git pull -q --rebase
+
+    git push [email protected]:jMonkeyEngine/jmonkeyengine.git

+ 27 - 26
build.gradle

@@ -29,31 +29,32 @@ task run(dependsOn: ':jme3-examples:run') {
 
 defaultTasks 'run'
 
-task libDist(dependsOn: subprojects.build) << {
-//    description 'Builds and copies the engine binaries, sources and javadoc to build/libDist'
-    File libFolder = mkdir("$buildDir/libDist/lib")
-    File sourceFolder = mkdir("$buildDir/libDist/sources")
-    File javadocFolder = mkdir("$buildDir/libDist/javadoc")
-    subprojects.each {project ->
-        if(project.ext.mainClass == ''){
-            project.tasks.withType(Jar).each {archiveTask ->
-                if(archiveTask.classifier == "sources"){
-                    copy {
-                        from archiveTask.archivePath
-                        into sourceFolder
-                        rename {project.name + '-' + archiveTask.classifier +'.'+ archiveTask.extension}
-                    }
-                } else if(archiveTask.classifier == "javadoc"){
-                    copy {
-                        from archiveTask.archivePath
-                        into javadocFolder
-                        rename {project.name + '-' + archiveTask.classifier +'.'+ archiveTask.extension}
-                    }
-                } else{
-                    copy {
-                        from archiveTask.archivePath
-                        into libFolder
-                        rename {project.name + '.' + archiveTask.extension}
+task libDist(dependsOn: subprojects.build, description: 'Builds and copies the engine binaries, sources and javadoc to build/libDist') {
+    doLast {
+        File libFolder = mkdir("$buildDir/libDist/lib")
+        File sourceFolder = mkdir("$buildDir/libDist/sources")
+        File javadocFolder = mkdir("$buildDir/libDist/javadoc")
+        subprojects.each {project ->
+            if(project.ext.mainClass == ''){
+                project.tasks.withType(Jar).each {archiveTask ->
+                    if(archiveTask.classifier == "sources"){
+                        copy {
+                            from archiveTask.archivePath
+                                into sourceFolder
+                                rename {project.name + '-' + archiveTask.classifier +'.'+ archiveTask.extension}
+                        }
+                    } else if(archiveTask.classifier == "javadoc"){
+                        copy {
+                            from archiveTask.archivePath
+                                into javadocFolder
+                                rename {project.name + '-' + archiveTask.classifier +'.'+ archiveTask.extension}
+                        }
+                    } else{
+                        copy {
+                            from archiveTask.archivePath
+                                into libFolder
+                                rename {project.name + '.' + archiveTask.extension}
+                        }
                     }
                 }
             }
@@ -115,7 +116,7 @@ task mergedSource(type: Copy){
 }
 
 task wrapper(type: Wrapper, description: 'Creates and deploys the Gradle wrapper to the current directory.') {
-    gradleVersion = '2.13'
+    gradleVersion = '3.2.1'
 }
 
 ext {

+ 0 - 19
common.gradle

@@ -18,16 +18,11 @@ repositories {
     }
 }
 
-configurations {
-    deployerJars
-}
-
 dependencies {
     // Adding dependencies here will add the dependencies to each subproject.
     testCompile group: 'junit', name: 'junit', version: '4.12'
     testCompile group: 'org.mockito', name: 'mockito-core', version: '2.0.28-beta'
     testCompile group: 'org.easytesting', name: 'fest-assert-core', version: '2.0M10'
-    deployerJars "org.apache.maven.wagon:wagon-ssh:2.9"
 }
 
 jar {
@@ -116,17 +111,3 @@ artifacts {
     archives writeFullPom.outputs.files[0]
 }
 
-uploadArchives {
-    repositories.mavenDeployer {
-        configuration = configurations.deployerJars
-        
-        // disable this otherwise it will fill up the server with stale jars
-        uniqueVersion = false
-        
-        repository(url: "scp://updates.jmonkeyengine.org/var/www/updates/maven") {
-             authentication(userName: "www-updater", privateKey: "private/www-updater.key")
-        }
-        
-        pom.project pomConfig
-    }
-}

+ 2 - 5
gradle.properties

@@ -8,7 +8,7 @@ jmeVersionTag = SNAPSHOT
 jmeVersionTagID = 0
 
 # specify if JavaDoc should be built
-buildJavaDoc = true
+buildJavaDoc = false
 
 # specify if SDK and Native libraries get built
 buildNativeProjects = false
@@ -21,10 +21,7 @@ ndkPath = /opt/android-ndk-r10c
 # Path for downloading native Bullet
 bulletUrl = https://github.com/bulletphysics/bullet3/archive/2.83.7.zip
 bulletFolder = bullet3-2.83.7
-bulletZipFile = bullet.zip
-
-# Path for downloading NetBeans Base
-netbeansUrl = http://download.netbeans.org/netbeans/8.0.2/final/zip/netbeans-8.0.2-201411181905-javase.zip
+bulletZipFile = bullet3.zip
 
 # POM settings
 POM_NAME=jMonkeyEngine

+ 2 - 2
gradle/wrapper/gradle-wrapper.properties

@@ -1,6 +1,6 @@
-#Sat Apr 30 16:44:31 EDT 2016
+#Fri Nov 25 13:05:50 EST 2016
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.13-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-3.2.1-bin.zip

+ 5 - 56
jme3-bullet-native-android/build.gradle

@@ -50,6 +50,7 @@ task unzipBullet(type: Copy) {
     from zipTree(zipFile)
     into outputDir
 }
+
 unzipBullet.dependsOn {
     def zipFile = file(localZipFile)
 //    println "zipFile path: " + zipFile.absolutePath
@@ -70,6 +71,7 @@ task copyBullet(type: Copy) {
     from sourceDir
     into outputDir
 }
+
 copyBullet.dependsOn {
     def bulletUnzipDir = file(localZipFolder)
 //    println "bulletUnzipDir: " + bulletUnzipDir.absolutePath
@@ -81,7 +83,7 @@ copyBullet.dependsOn {
 }
 
 // Copy jME cpp native files to jni directory
-task copyJmeCpp(type: Copy, dependsOn:copyBullet) {
+task copyJmeCpp(type: Copy) {
     def sourceDir = new File(jmeCppPath)
     def outputDir = new File(jniPath)
 //    println "copyJmeCpp sourceDir = " + sourceDir
@@ -92,7 +94,7 @@ task copyJmeCpp(type: Copy, dependsOn:copyBullet) {
 }
 
 // Copy jME android native files to jni directory
-task copyJmeAndroid(type: Copy, dependsOn:copyJmeCpp) {
+task copyJmeAndroid(type: Copy) {
     def sourceDir = new File(jmeAndroidPath)
     def outputDir = new File(jniPath)
 //    println "copyJmeAndroid sourceDir = " + sourceDir
@@ -102,60 +104,7 @@ task copyJmeAndroid(type: Copy, dependsOn:copyJmeCpp) {
     into outputDir
 }
 
-task generateNativeHeaders(dependsOn: copyJmeAndroid) << {
-    String destDirPath = jniPath
-    String classes = " \
-            com.jme3.bullet.PhysicsSpace, \
-            \
-            com.jme3.bullet.collision.PhysicsCollisionEvent, \
-            com.jme3.bullet.collision.PhysicsCollisionObject,\
-            com.jme3.bullet.objects.PhysicsCharacter, \
-            com.jme3.bullet.objects.PhysicsGhostObject, \
-            com.jme3.bullet.objects.PhysicsRigidBody, \
-            com.jme3.bullet.objects.PhysicsVehicle, \
-            com.jme3.bullet.objects.VehicleWheel, \
-            com.jme3.bullet.objects.infos.RigidBodyMotionState, \
-            \
-            com.jme3.bullet.collision.shapes.CollisionShape, \
-            com.jme3.bullet.collision.shapes.BoxCollisionShape, \
-            com.jme3.bullet.collision.shapes.CapsuleCollisionShape, \
-            com.jme3.bullet.collision.shapes.CompoundCollisionShape, \
-            com.jme3.bullet.collision.shapes.ConeCollisionShape, \
-            com.jme3.bullet.collision.shapes.CylinderCollisionShape, \
-            com.jme3.bullet.collision.shapes.GImpactCollisionShape, \
-            com.jme3.bullet.collision.shapes.HeightfieldCollisionShape, \
-            com.jme3.bullet.collision.shapes.HullCollisionShape, \
-            com.jme3.bullet.collision.shapes.MeshCollisionShape, \
-            com.jme3.bullet.collision.shapes.PlaneCollisionShape, \
-            com.jme3.bullet.collision.shapes.SimplexCollisionShape, \
-            com.jme3.bullet.collision.shapes.SphereCollisionShape, \
-            \
-            com.jme3.bullet.joints.PhysicsJoint, \
-            com.jme3.bullet.joints.ConeJoint, \
-            com.jme3.bullet.joints.HingeJoint, \
-            com.jme3.bullet.joints.Point2PointJoint, \
-            com.jme3.bullet.joints.SixDofJoint, \
-            com.jme3.bullet.joints.SixDofSpringJoint, \
-            com.jme3.bullet.joints.SliderJoint, \
-            com.jme3.bullet.joints.motors.RotationalLimitMotor, \
-            com.jme3.bullet.joints.motors.TranslationalLimitMotor, \
-            \
-            com.jme3.bullet.util.NativeMeshUtil, \
-            com.jme3.bullet.util.DebugShapeFactory"
-
-    String projectClassPath = configurations.runtime.asFileTree.matching {
-        exclude ".gradle"
-    }.asPath
-
-    exec {
-        executable org.gradle.internal.jvm.Jvm.current().getExecutable('javah')
-        args '-d', destDirPath
-        args '-classpath', projectClassPath
-        args classes.split(",").collect { it.trim() }
-    }
-}
-
-task buildBulletNativeLib(type: Exec, dependsOn: generateNativeHeaders) {
+task buildBulletNativeLib(type: Exec, dependsOn: [copyJmeAndroid, copyJmeCpp, copyBullet]) {
 //    args 'TARGET_PLATFORM=android-9'
 //    println "buildBulletNativeLib ndkWorkingPath: " + ndkWorkingPath
 //    println "buildBulletNativeLib rootProject.ndkCommandPath: " + rootProject.ndkCommandPath

+ 6 - 31
jme3-bullet-native/build.gradle

@@ -40,7 +40,7 @@ model {
             }
         }
     }
-    
+
     binaries {
         withType(SharedLibraryBinarySpec) {
             def projectPath = project.projectDir.absolutePath
@@ -48,10 +48,10 @@ model {
             def os = targetPlatform.operatingSystem.name
             def arch = targetPlatform.architecture.name
             def fileName = sharedLibraryFile.name
-            
+
             // Gradle decided to change underscores to dashes - fix that.
             arch = arch.replaceAll('-', '_')
-            
+
             // For all binaries that can't be built on the current system
             if (buildNativeProjects != "true") {
                 buildable = false
@@ -114,14 +114,14 @@ model {
                 }
                 cppCompiler.define('WIN32')
             }
-            
+
             tasks.all { dependsOn unzipBulletIfNeeded }
 
             // Add output to jar file
             jar.into("native/${os}/${arch}") {
                 from sharedLibraryFile
             }
-            
+
             // Add depend on build
             jar.dependsOn tasks
             // Add output to libs folder
@@ -163,31 +163,6 @@ model {
             operatingSystem "linux"
         }
     }
-
-    toolChains {
-        gcc(Gcc)
-	clang(Clang)
-        mingw_x86(Gcc) {
-            eachPlatform() {
-                cCompiler.executable "i686-w64-mingw32-gcc"
-                cppCompiler.executable "i686-w64-mingw32-g++"
-                linker.executable "i686-w64-mingw32-g++"
-                assembler.executable "i686-w64-mingw32-g++"
-                staticLibArchiver.executable "i686-w64-mingw32-gcc-ar"
-            }
-            target("Windows32")
-        }
-        mingw_x86_64(Gcc) {
-            eachPlatform() {
-                cCompiler.executable "x86_64-w64-mingw32-gcc"
-                cppCompiler.executable "x86_64-w64-mingw32-g++"
-                linker.executable "x86_64-w64-mingw32-g++"
-                assembler.executable "x86_64-w64-mingw32-g++"
-                staticLibArchiver.executable "x86_64-w64-mingw32-gcc-ar"
-            }
-            target("Windows64")
-        }
-    }
 }
 
 // Java source sets for IDE access and source jar bundling / mavenization
@@ -215,7 +190,7 @@ unzipBullet.dependsOn {
     }
 }
 
-task unzipBulletIfNeeded << {
+task unzipBulletIfNeeded {
 }
 
 unzipBulletIfNeeded.dependsOn {

BIN
jme3-bullet-native/libs/native/linux/x86/libbulletjme.so


BIN
jme3-bullet-native/libs/native/linux/x86_64/libbulletjme.so


BIN
jme3-bullet-native/libs/native/osx/x86/libbulletjme.dylib


BIN
jme3-bullet-native/libs/native/osx/x86_64/libbulletjme.dylib


BIN
jme3-bullet-native/libs/native/windows/x86/bulletjme.dll


BIN
jme3-bullet-native/libs/native/windows/x86_64/bulletjme.dll


+ 17 - 18
jme3-bullet-native/src/native/cpp/com_jme3_bullet_PhysicsSpace.h

@@ -144,11 +144,27 @@ JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_setGravity
 /*
  * Class:     com_jme3_bullet_PhysicsSpace
  * Method:    rayTest_native
- * Signature: (Lcom/jme3/math/Vector3f;Lcom/jme3/math/Vector3f;JLjava/util/List;)V
+ * Signature: (Lcom/jme3/math/Vector3f;Lcom/jme3/math/Vector3f;JLjava/util/List;I)V
  */
 JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_rayTest_1native
   (JNIEnv *, jobject, jobject, jobject, jlong, jobject, jint);
 
+/*
+ * Class:     com_jme3_bullet_PhysicsSpace
+ * Method:    sweepTest_native
+ * Signature: (JLcom/jme3/math/Transform;Lcom/jme3/math/Transform;JLjava/util/List;F)V
+ */
+JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_sweepTest_1native
+  (JNIEnv *, jobject, jlong, jobject, jobject, jlong, jobject, jfloat);
+
+/*
+ * Class:     com_jme3_bullet_PhysicsSpace
+ * Method:    setSolverNumIterations
+ * Signature: (JI)V
+ */
+JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_setSolverNumIterations
+  (JNIEnv *, jobject, jlong, jint);
+
 /*
  * Class:     com_jme3_bullet_PhysicsSpace
  * Method:    initNativePhysics
@@ -165,23 +181,6 @@ JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_initNativePhysics
 JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_finalizeNative
   (JNIEnv *, jobject, jlong);
 
-
-/*
-* Class:     com_jme3_bullet_PhysicsSpace
-* Method : sweepTest_native
-* Signature: (J;L;Lcom/jme3/math/Transform;Lcom/jme3/math/Transform;L;JLjava/util/List;F)V
-*/
-JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_sweepTest_1native
-(JNIEnv *, jobject, jlong, jobject, jobject, jlong, jobject, jfloat);
-
-/*
- * Class:     com_jme3_bullet_PhysicsSpace
- * Method:    setSolverNumIterations
- * Signature: (JI)V
- */
-JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_setSolverNumIterations
-(JNIEnv *, jobject, jlong, jint);
-
 #ifdef __cplusplus
 }
 #endif

+ 0 - 1
jme3-bullet-native/src/native/cpp/com_jme3_bullet_objects_PhysicsRigidBody.h

@@ -401,7 +401,6 @@ JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_getAngula
 JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_getAngularFactor
   (JNIEnv *, jobject, jlong, jobject);
 
-
 /*
  * Class:     com_jme3_bullet_objects_PhysicsRigidBody
  * Method:    setAngularFactor

+ 51 - 0
jme3-bullet/build.gradle

@@ -15,3 +15,54 @@ dependencies {
     compile project(':jme3-core')
     compile project(':jme3-terrain')
 }
+
+task generateNativeHeaders(type: Exec, dependsOn: classes) {
+    def classes = " \
+        com.jme3.bullet.PhysicsSpace, \
+        \
+        com.jme3.bullet.collision.PhysicsCollisionEvent, \
+        com.jme3.bullet.collision.PhysicsCollisionObject,\
+        com.jme3.bullet.objects.PhysicsCharacter, \
+        com.jme3.bullet.objects.PhysicsGhostObject, \
+        com.jme3.bullet.objects.PhysicsRigidBody, \
+        com.jme3.bullet.objects.PhysicsVehicle, \
+        com.jme3.bullet.objects.VehicleWheel, \
+        com.jme3.bullet.objects.infos.RigidBodyMotionState, \
+        \
+        com.jme3.bullet.collision.shapes.CollisionShape, \
+        com.jme3.bullet.collision.shapes.BoxCollisionShape, \
+        com.jme3.bullet.collision.shapes.CapsuleCollisionShape, \
+        com.jme3.bullet.collision.shapes.CompoundCollisionShape, \
+        com.jme3.bullet.collision.shapes.ConeCollisionShape, \
+        com.jme3.bullet.collision.shapes.CylinderCollisionShape, \
+        com.jme3.bullet.collision.shapes.GImpactCollisionShape, \
+        com.jme3.bullet.collision.shapes.HeightfieldCollisionShape, \
+        com.jme3.bullet.collision.shapes.HullCollisionShape, \
+        com.jme3.bullet.collision.shapes.MeshCollisionShape, \
+        com.jme3.bullet.collision.shapes.PlaneCollisionShape, \
+        com.jme3.bullet.collision.shapes.SimplexCollisionShape, \
+        com.jme3.bullet.collision.shapes.SphereCollisionShape, \
+        \
+        com.jme3.bullet.joints.PhysicsJoint, \
+        com.jme3.bullet.joints.ConeJoint, \
+        com.jme3.bullet.joints.HingeJoint, \
+        com.jme3.bullet.joints.Point2PointJoint, \
+        com.jme3.bullet.joints.SixDofJoint, \
+        com.jme3.bullet.joints.SixDofSpringJoint, \
+        com.jme3.bullet.joints.SliderJoint, \
+        com.jme3.bullet.joints.motors.RotationalLimitMotor, \
+        com.jme3.bullet.joints.motors.TranslationalLimitMotor, \
+        \
+        com.jme3.bullet.util.NativeMeshUtil, \
+        com.jme3.bullet.util.DebugShapeFactory"
+
+    def classpath = sourceSets.main.runtimeClasspath.asPath
+    def nativeIncludes = new File(project(":jme3-bullet-native").projectDir, "src/native/cpp")
+
+    executable org.gradle.internal.jvm.Jvm.current().getExecutable('javah')
+    args "-d", nativeIncludes
+    args "-classpath", classpath
+    args classes.split(",").collect { it.trim() }
+}
+
+assemble.dependsOn(generateNativeHeaders)

+ 60 - 58
jme3-examples/build.gradle

@@ -63,69 +63,71 @@ jar.doFirst{
 
 task dist (dependsOn: ['build', ':jme3-jogl:jar', ':jme3-bullet:jar', ':jme3-android:jar', \
                        ':jme3-android-native:jar', ':jme3-bullet-native-android:jar', \
-                       ':jme3-bullet-native:jar']) << {
-    // Copy all dependencies to ../dist/lib, remove versions from jar files
-    configurations.compile.resolvedConfiguration.resolvedArtifacts.each { artifact ->
-        copy {
-            from artifact.file
-            into '../dist/lib'
-            if(artifact.classifier != null){
-                rename { "${artifact.name}-${artifact.classifier}.${artifact.extension}" }
-            } else{
-                rename { "${artifact.name}.${artifact.extension}" }
+                       ':jme3-bullet-native:jar']) {
+    doLast {
+        // Copy all dependencies to ../dist/lib, remove versions from jar files
+        configurations.compile.resolvedConfiguration.resolvedArtifacts.each { artifact ->
+            copy {
+                from artifact.file
+                into '../dist/lib'
+                if(artifact.classifier != null){
+                    rename { "${artifact.name}-${artifact.classifier}.${artifact.extension}" }
+                } else{
+                    rename { "${artifact.name}.${artifact.extension}" }
+                }
             }
         }
-    }
-    copy {
-        from jar.archivePath
-        into '../dist'
-        rename { "jMonkeyEngine3.jar" }
-    }
-    // Copy JOGL packages, remove version
-    def config = project(':jme3-jogl').configurations.runtime.copyRecursive({ !(it instanceof ProjectDependency); })
-    config.resolvedConfiguration.resolvedArtifacts.each {artifact ->
-        copy{
-            from artifact.file
-            into '../dist/opt/jogl/lib'
-            if(artifact.classifier != null){
-                rename { "${artifact.name}-${artifact.classifier}.${artifact.extension}" }
-            } else{
-                rename { "${artifact.name}.${artifact.extension}" }
+        copy {
+            from jar.archivePath
+            into '../dist'
+            rename { "jMonkeyEngine3.jar" }
+        }
+        // Copy JOGL packages, remove version
+        def config = project(':jme3-jogl').configurations.runtime.copyRecursive({ !(it instanceof ProjectDependency); })
+        config.resolvedConfiguration.resolvedArtifacts.each {artifact ->
+            copy{
+                from artifact.file
+                into '../dist/opt/jogl/lib'
+                if(artifact.classifier != null){
+                    rename { "${artifact.name}-${artifact.classifier}.${artifact.extension}" }
+                } else{
+                    rename { "${artifact.name}.${artifact.extension}" }
+                }
             }
         }
-    }
-    copy {
-        from project(':jme3-jogl').jar.archivePath
-        into '../dist/opt/jogl'
-        rename {project(':jme3-jogl').name+".jar"}
-    }
+        copy {
+            from project(':jme3-jogl').jar.archivePath
+            into '../dist/opt/jogl'
+            rename {project(':jme3-jogl').name+".jar"}
+        }
 
-    // Copy bullet packages, remove version
-    copy {
-        from project(':jme3-bullet').jar.archivePath
-        into '../dist/opt/native-bullet'
-        rename {project(':jme3-bullet').name+".jar"}
-    }
-    copy {
-        from project(':jme3-bullet-native').jar.archivePath
-        into '../dist/opt/native-bullet'
-        rename {project(':jme3-bullet-native').name+".jar"}
-    }
+        // Copy bullet packages, remove version
+        copy {
+            from project(':jme3-bullet').jar.archivePath
+            into '../dist/opt/native-bullet'
+            rename {project(':jme3-bullet').name+".jar"}
+        }
+        copy {
+            from project(':jme3-bullet-native').jar.archivePath
+            into '../dist/opt/native-bullet'
+            rename {project(':jme3-bullet-native').name+".jar"}
+        }
 
-    // Copy android packages, remove version
-    copy {
-        from project(':jme3-android').jar.archivePath
-        into '../dist/opt/android'
-        rename {project(':jme3-android').name+".jar"}
-    }
-    copy {
-        from project(':jme3-android-native').jar.archivePath
-        into '../dist/opt/android'
-        rename {project(':jme3-android-native').name+".jar"}
-    }
-    copy {
-        from project(':jme3-bullet-native-android').jar.archivePath
-        into '../dist/opt/native-bullet'
-        rename {project(':jme3-bullet-native-android').name+".jar"}
+        // Copy android packages, remove version
+        copy {
+            from project(':jme3-android').jar.archivePath
+            into '../dist/opt/android'
+            rename {project(':jme3-android').name+".jar"}
+        }
+        copy {
+            from project(':jme3-android-native').jar.archivePath
+            into '../dist/opt/android'
+            rename {project(':jme3-android-native').name+".jar"}
+        }
+        copy {
+            from project(':jme3-bullet-native-android').jar.archivePath
+            into '../dist/opt/native-bullet'
+            rename {project(':jme3-bullet-native-android').name+".jar"}
+        }
     }
 }

+ 4 - 0
private/key.enc

@@ -0,0 +1,4 @@
+&"�µ+еq.вg”2K:ЈЖ‡Tџ†™гЋ
>1иГ8в]v^LР«ЪЭ/R"№o2н#5;ВQ`;в@с»¦±–ѕ&{гyыJGaп„­GТй;лфРlTd·“lоОtnгHxЊв¦ьp~Wзr€вJ5БЮДЭдє‰оґCєЋсh_#»
+ЫћЏ©){2xXђкdЮЉвзuЌ1Юі®
+"
+ЇP‘Ђ„йЛ DC¶©'e1НщDд·k�]i§x&"n§93С5‡ћd6Њ==·XХb”8JWЉBМу/±wmЙJ&Y‹“ЖмЈЉu=*Ї

+ 16 - 0
private/upload_native.sh

@@ -0,0 +1,16 @@
+#!/bin/bash
+set -euo pipefail
+# NATIVE_CHANGES="$(git diff-tree --name-only "$TRAVIS_COMMIT" -- jme3-bullet-native/)"
+# if [ "$NATIVE_CHANGES" != "" ]; then
+    git config --global user.email "travis-ci"
+    git config --global user.name "travis-ci"
+    openssl aes-256-cbc -K $encrypted_f0a0b284e2e8_key -iv $encrypted_f0a0b284e2e8_iv -in private/key.enc -out "$HOME/.ssh/id_rsa" -d
+    chmod 600 "$HOME/.ssh/id_rsa"
+    ls jme3-bullet-native/build/libs/bulletjme/shared/
+    md5 -r jme3-bullet-native/libs/native/osx/x86/libbulletjme.dylib jme3-bullet-native/build/libs/bulletjme/shared/mac32/libbulletjme.dylib
+    git checkout "$TRAVIS_BRANCH"
+    git add -v -- jme3-bullet-native/libs/native/
+    git commit -v -m "[ci skip] bullet: update $TRAVIS_OS_NAME natives"
+    git pull -q --rebase
+    # git push [email protected]:jMonkeyEngine/jmonkeyengine.git
+# fi

BIN
private/www-updater.key.enc


+ 3 - 1
settings.gradle

@@ -15,7 +15,9 @@ include 'jme3-desktop'
 include 'jme3-blender'
 include 'jme3-jogl'
 include 'jme3-lwjgl'
-include 'jme3-lwjgl3'
+if (JavaVersion.current().isJava8Compatible()) {
+    include 'jme3-lwjgl3'
+}
 
 // Other external dependencies
 include 'jme3-jbullet'

+ 15 - 18
version.gradle

@@ -1,7 +1,7 @@
 /*
  Version Info Examples
  =====================
- 
+
  Nightly Build Snapshot
  * git tag:
  * Full Version: 3.1-5124
@@ -22,14 +22,14 @@
  * POM Version: 3.1.0-alpha1
  * NBM Revision: 0
  * NBM UC Suffix: stable/3.1/plugins
- 
+
  Final Release
  * git tag: v3.1.0
  * Full Version: 3.1
  * POM Version: 3.1.0
  * NBM Revision: 0
  * NBM UC Suffix: stable/3.1/plugins
- */ 
+ */
 
 import java.text.SimpleDateFormat
 import org.ajoberstar.grgit.*
@@ -45,7 +45,6 @@ buildscript {
 
 ext {
     jmeRevision     = 0
-    jmeNbmRevision  = 0
     jmeGitHash      = ""
     jmeGitTag       = ""
     jmeShortGitHash = ""
@@ -53,7 +52,6 @@ ext {
     jmeBranchName   = "unknown"
     jmeFullVersion  = "${jmeVersion}-UNKNOWN"
     jmePomVersion   = "unknown"
-    jmeNbmUcSuffix  = "unknown"
 }
 
 def getReleaseInfo(String tag) {
@@ -122,47 +120,46 @@ task configureVersionInfo {
         jmeShortGitHash = head.abbreviatedId
         jmeBranchName = grgit.branch.current.name
         jmeGitTag = grgit.tag.list().find { it.commit == head }
-        
+
         if (jmeGitTag != null) {
             jmeGitTag = jmeGitTag.name
         } else {
-            jmeGitTag = System.env.TRAVIS_TAG
+            if (System.env.APPVEYOR_REPO_TAG == "true") {
+                jmeGitTag = System.env.APPVEYOR_REPO_TAG_NAME
+            } else {
+                jmeGitTag = System.env.TRAVIS_TAG
+            }
         }
 
         def releaseInfo = getReleaseInfo(jmeGitTag)
         if (releaseInfo != null) {
             jmeFullVersion = "${releaseInfo.baseVersion}${releaseInfo.releaseSuffix}"
             jmePomVersion = "${releaseInfo.mainVersion}${releaseInfo.releaseSuffix}"
-            jmeNbmRevision = "0"
-            jmeNbmUcSuffix = "stable/${releaseInfo.baseVersion}/plugins"
         } else {
             // SNAPSHOT
             jmeFullVersion = jmeMainVersion
             jmePomVersion  = jmeVersion
             if (System.env.TRAVIS_BRANCH != null) {
                 jmeBranchName = System.env.TRAVIS_BRANCH
+            } else if (System.env.APPVEYOR_REPO_BRANCH != null) {
+                jmeBranchName = System.env.APPVEYOR_REPO_BRANCH
             }
-            if (System.env.TRAVIS_PULL_REQUEST != null && 
+            if (System.env.TRAVIS_PULL_REQUEST != null &&
                 System.env.TRAVIS_PULL_REQUEST != "false") {
                 jmeBranchName += "-pr-" + System.env.TRAVIS_PULL_REQUEST
+            } else if (System.env.APPVEYOR_PULL_REQUEST_NUMBER != null) {
+                jmeBranchName += "-pr-" + System.env.APPVEYOR_PULL_REQUEST_NUMBER
             }
             if (jmeBranchName != "master") {
                 jmeFullVersion += "-${jmeBranchName}"
                 jmePomVersion  += "-${jmeBranchName}"
-                jmeNbmUcSuffix = "${jmeBranchName}-"
-            } else {
-                jmeNbmUcSuffix = ""
             }
-            jmeNbmUcSuffix += "nightly/" + jmeMainVersion + "/plugins"
             jmeFullVersion += "-${jmeRevision}"
             jmePomVersion  += "-SNAPSHOT"
-            jmeNbmRevision = jmeRevision
         }
-            
+
         logger.warn("Full Version: ${jmeFullVersion}")
         logger.warn("POM Version: ${jmePomVersion}")
-        logger.warn("NBM Revision: ${jmeNbmRevision}")
-        logger.warn("NBM UC Suffix: ${jmeNbmUcSuffix}")
     } catch (ex) {
         // Failed to get repo info
         logger.warn("Failed to get repository info: " + ex.message + ". " + \