Browse Source

Fix missing bullet natives when running tests from within the engine project.

Riccardo Balbo 5 years ago
parent
commit
b571840bd0
2 changed files with 54 additions and 74 deletions
  1. 8 1
      build.gradle
  2. 46 73
      jme3-bullet-native/build.gradle

+ 8 - 1
build.gradle

@@ -184,12 +184,19 @@ if(skipPrebuildLibraries!="true"&&buildNativeProjects!="true"){
                     String srcRel=src.getAbsolutePath().substring((int)(nativesZipFile.length()+1));
                     srcRel=srcRel.substring(srcRel.indexOf("/")+1);
 
+                    // TODO backward compatibility with old path, To be removed.
+                    int j=srcRel.indexOf("/");
+                    String p1=srcRel.substring(0,j);
+                    String p2=srcRel.substring(j);
+                    if(!p1.equals("android")&&!p2.startsWith("/native"))  srcRel=p1+"/native"+p2;
+                    //
+
                     File dest=new File(nativesPath+File.separator+srcRel);
 
                     boolean include=false;
                     if(!dest.exists()){
                         include=true;
-                        println("Copy "+src+" "+dest+  ". Destination does not exist");
+                        println("Copy "+src+" "+dest);
                     }else if(dest.lastModified()<src.lastModified()){
                         include=true;
                         println("Copy "+src+" "+dest+  ". Source is newer. src "+src.lastModified()+ " dest "+dest.lastModified());

+ 46 - 73
jme3-bullet-native/build.gradle

@@ -2,6 +2,8 @@ apply plugin: 'cpp'
 
 import java.nio.file.Paths
 
+def rootPath = rootProject.projectDir.absolutePath
+
 String bulletSrcPath = bulletFolder + '/src'
 
 if (!hasProperty('mainClass')) {
@@ -120,7 +122,6 @@ model {
 
     binaries {
         withType(SharedLibraryBinarySpec) {
-            def rootPath = rootProject.projectDir.absolutePath
             def javaHome = org.gradle.internal.jvm.Jvm.current().javaHome
             def os = targetPlatform.operatingSystem.name
             def arch = targetPlatform.architecture.name
@@ -130,88 +131,57 @@ model {
             arch = arch.replaceAll('-', '_')
 
             // For all binaries that can't be built on the current system
-            if (buildNativeProjects != "true") {
-                buildable = false
-            }
+            if (buildNativeProjects != "true")  buildable = false
 
-            if (!buildable) {
-                if (sharedLibraryFile.exists()) {
-                    // Add binary to jar file if the binary exists in the build folder already,
-                    // e.g. when the build of jme3-bullet-native has been run on a virtual box
-                    // and the project hasn't been cleaned yet.
-                    jar.into("native/${os}/${arch}") {
-                        from sharedLibraryFile
-                    }
-                } else {
-                    // Get from libs folder if no fresh build is available in the build folder and add to jar file
-                    def precompiledFile = Paths.get(rootPath, 'build', 'native', 'bullet', os, arch, fileName).toFile()
-                    if (precompiledFile.exists()) {
-                        jar.into("native/${os}/${arch}") {
-                            from precompiledFile
-                        }
-                    }
+            if (buildable) {            
+                cppCompiler.define('BT_NO_PROFILE')
+                if (toolChain in VisualCpp) {
+                    cppCompiler.args "/I$javaHome\\include"
+                } else{
+                    cppCompiler.args '-I', "$javaHome/include"
                 }
-                return
-            }
-
-            cppCompiler.define('BT_NO_PROFILE')
-            if (toolChain in VisualCpp) {
-                cppCompiler.args "/I$javaHome\\include"
-            } else{
-                cppCompiler.args '-I', "$javaHome/include"
-            }
 
-            if (os == "osx") {
-                cppCompiler.args '-I', "$javaHome/include/darwin"
-                cppCompiler.args "-O3"
-                cppCompiler.args "-U_FORTIFY_SOURCE"
-            } else if (os == "linux") {
-                cppCompiler.args "-fvisibility=hidden"
-                cppCompiler.args '-I', "$javaHome/include/linux"
-                cppCompiler.args "-fPIC"
-                cppCompiler.args "-O3"
-                cppCompiler.args "-U_FORTIFY_SOURCE"
-                cppCompiler.args "-fpermissive"
-                linker.args "-fvisibility=hidden"
-            } else if (os == "windows") {
-                if (toolChain in Gcc) {
-                    if (toolChain.name.startsWith('mingw')) {
-                        cppCompiler.args '-I', "$projectDir/src/native/cpp/fake_win32"
-                    } else {
-                        cppCompiler.args '-I', "$javaHome/include/win32"
-                    }
-                    cppCompiler.args "-fpermissive"
-                    cppCompiler.args "-static"
+                if (os == "osx") {
+                    cppCompiler.args '-I', "$javaHome/include/darwin"
                     cppCompiler.args "-O3"
                     cppCompiler.args "-U_FORTIFY_SOURCE"
-                    linker.args "-static"
-                    linker.args "-Wl,--exclude-all-symbols"
+                } else if (os == "linux") {
+                    cppCompiler.args "-fvisibility=hidden"
+                    cppCompiler.args '-I', "$javaHome/include/linux"
+                    cppCompiler.args "-fPIC"
+                    cppCompiler.args "-O3"
+                    cppCompiler.args "-U_FORTIFY_SOURCE"
+                    cppCompiler.args "-fpermissive"
+                    linker.args "-fvisibility=hidden"
+                } else if (os == "windows") {
+                    if (toolChain in Gcc) {
+                        if (toolChain.name.startsWith('mingw'))  cppCompiler.args '-I', "$projectDir/src/native/cpp/fake_win32"
+                        else  cppCompiler.args '-I', "$javaHome/include/win32"                        
+                        cppCompiler.args "-fpermissive"
+                        cppCompiler.args "-static"
+                        cppCompiler.args "-O3"
+                        cppCompiler.args "-U_FORTIFY_SOURCE"
+                        linker.args "-static"
+                        linker.args "-Wl,--exclude-all-symbols"
+                    } else if (toolChain in VisualCpp) {
+                        cppCompiler.args "/I$javaHome\\include\\win32"
+                    }
+                    cppCompiler.define('WIN32')
                 }
-                else if (toolChain in VisualCpp) {
-                    cppCompiler.args "/I$javaHome\\include\\win32"
+                tasks.all { 
+                    dependsOn unzipBulletIfNeeded
+                    dependsOn ':jme3-bullet:compileJava'
                 }
-                cppCompiler.define('WIN32')
-            }
 
-            tasks.all { 
-                dependsOn unzipBulletIfNeeded
-                dependsOn ':jme3-bullet:compileJava'
-            }
+                task "copyBinaryToLibs${targetPlatform.name}"(type: Copy, dependsOn: tasks) {
+                    from sharedLibraryFile
+                    into "${rootPath}/build/native/bullet/native/${os}/${arch}"
+                } 
 
-            // Add output to jar file
-            jar.into("native/${os}/${arch}") {
-                from sharedLibraryFile
-            }
+                // Add depend on copy
+                jar.dependsOn("copyBinaryToLibs${targetPlatform.name}")
 
-            // Add depend on build
-            jar.dependsOn tasks
-            // Add output to libs folder
-            task "copyBinaryToLibs${targetPlatform.name}"(type: Copy, dependsOn: tasks) {
-                from sharedLibraryFile
-                into "${rootPath}/build/native/bullet/${os}/${arch}"
-            } 
-            // Add depend on copy
-            jar.dependsOn("copyBinaryToLibs${targetPlatform.name}")
+            }
         }
         withType(StaticLibraryBinarySpec) {
             buildable = false
@@ -264,6 +234,9 @@ sourceSets {
         java {
             srcDir 'src/native/cpp'
         }
+        resources {
+            srcDir file(Paths.get(rootPath, 'build', 'native', 'bullet'))
+        }
     }
 }