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

fix-openal-soft-deadlink
Riccardo Balbo 5 years ago
parent 2c6161ecd8
commit b571840bd0
  1. 9
      build.gradle
  2. 119
      jme3-bullet-native/build.gradle

@ -184,12 +184,19 @@ if(skipPrebuildLibraries!="true"&&buildNativeProjects!="true"){
String srcRel=src.getAbsolutePath().substring((int)(nativesZipFile.length()+1)); String srcRel=src.getAbsolutePath().substring((int)(nativesZipFile.length()+1));
srcRel=srcRel.substring(srcRel.indexOf("/")+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); File dest=new File(nativesPath+File.separator+srcRel);
boolean include=false; boolean include=false;
if(!dest.exists()){ if(!dest.exists()){
include=true; include=true;
println("Copy "+src+" "+dest+ ". Destination does not exist"); println("Copy "+src+" "+dest);
}else if(dest.lastModified()<src.lastModified()){ }else if(dest.lastModified()<src.lastModified()){
include=true; include=true;
println("Copy "+src+" "+dest+ ". Source is newer. src "+src.lastModified()+ " dest "+dest.lastModified()); println("Copy "+src+" "+dest+ ". Source is newer. src "+src.lastModified()+ " dest "+dest.lastModified());

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

Loading…
Cancel
Save