diff --git a/build.gradle b/build.gradle index a4a4259a6..3dc3a58a2 100644 --- a/build.gradle +++ b/build.gradle @@ -118,7 +118,7 @@ task mergedSource(type: Copy){ } task wrapper(type: Wrapper, description: 'Creates and deploys the Gradle wrapper to the current directory.') { - gradleVersion = '2.2.1' + gradleVersion = '2.13' } ext { diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index c97a8bdb9..ca78035ef 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a0f68906b..4a13cd639 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Mon Dec 01 20:04:11 EST 2014 +#Sat Apr 30 16:44:31 EDT 2016 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-2.13-bin.zip diff --git a/gradlew b/gradlew index 91a7e269e..27309d923 100755 --- a/gradlew +++ b/gradlew @@ -6,12 +6,30 @@ ## ############################################################################## -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null APP_NAME="Gradle" APP_BASE_NAME=`basename "$0"` +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" @@ -30,6 +48,7 @@ die ( ) { cygwin=false msys=false darwin=false +nonstop=false case "`uname`" in CYGWIN* ) cygwin=true @@ -40,31 +59,11 @@ case "`uname`" in MINGW* ) msys=true ;; + NONSTOP* ) + nonstop=true + ;; esac -# For Cygwin, ensure paths are in UNIX format before anything is touched. -if $cygwin ; then - [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` -fi - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >&- -APP_HOME="`pwd -P`" -cd "$SAVED" >&- - CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. @@ -90,7 +89,7 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then MAX_FD_LIMIT=`ulimit -H -n` if [ $? -eq 0 ] ; then if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then @@ -114,6 +113,7 @@ fi if $cygwin ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` diff --git a/gradlew.bat b/gradlew.bat index aec99730b..f6d5974e7 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -8,14 +8,14 @@ @rem Set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - set DIRNAME=%~dp0 if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome @@ -46,7 +46,7 @@ echo location of your Java installation. goto fail :init -@rem Get command-line arguments, handling Windowz variants +@rem Get command-line arguments, handling Windows variants if not "%OS%" == "Windows_NT" goto win9xME_args if "%@eval[2+2]" == "4" goto 4NT_args diff --git a/jme3-bullet-native/build.gradle b/jme3-bullet-native/build.gradle index c0afd5f4c..3a1740bb2 100644 --- a/jme3-bullet-native/build.gradle +++ b/jme3-bullet-native/build.gradle @@ -1,46 +1,97 @@ apply plugin: 'cpp' -String bulletSrcPath = bulletFolder + '/src' +import java.nio.file.Paths -if (!hasProperty('mainClass')) { - ext.mainClass = '' -} +String bulletSrcPath = bulletFolder + '/src' dependencies { compile project(':jme3-bullet') } -// Defines created C++ libraries -libraries { - bulletjme { +model { + components { + bulletjme(NativeLibrarySpec) { + targetPlatform 'Windows64' + targetPlatform 'Windows32' + targetPlatform 'Mac64' + targetPlatform 'Mac32' + targetPlatform 'Linux64' + targetPlatform 'Linux32' + + sources { + cpp { + source { + srcDir 'src/native/cpp' + srcDir bulletSrcPath + exclude 'BulletMultiThreaded/GpuSoftBodySolvers/**' + include '**/*.cpp' + } + exportedHeaders { + srcDir 'src/native/cpp' + srcDir bulletSrcPath + include '**/*.h' + } + } + } + } } - all { - binaries.all { + + binaries { + withType(SharedLibraryBinarySpec) { + def projectPath = project.projectDir.absolutePath + def javaHome = org.gradle.internal.jvm.Jvm.current().javaHome + 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 + } + + 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(projectPath, 'libs', 'native', os, arch, fileName).toFile() + if (precompiledFile.exists()) { + jar.into("native/${os}/${arch}") { + from precompiledFile + } + } + } + return + } + if (toolChain in VisualCpp) { - cppCompiler.args "/I${org.gradle.internal.jvm.Jvm.current().javaHome}\\include" + cppCompiler.args "/I$javaHome\\include" } else{ - cppCompiler.args '-I', "${org.gradle.internal.jvm.Jvm.current().javaHome}/include" + cppCompiler.args '-I', "$javaHome/include" } - if (targetPlatform.operatingSystem.name == "osx") { - cppCompiler.args '-I', "${org.gradle.internal.jvm.Jvm.current().javaHome}/include/darwin" - } else if (targetPlatform.operatingSystem.name == "linux") { + if (os == "osx") { + cppCompiler.args '-I', "$javaHome/include/darwin" + } else if (os == "linux") { cppCompiler.args "-fvisibility=hidden" - cppCompiler.args '-I', "${org.gradle.internal.jvm.Jvm.current().javaHome}/include/linux" + cppCompiler.args '-I', "$javaHome/include/linux" cppCompiler.args "-fPIC" cppCompiler.args "-fpermissive" linker.args "-fvisibility=hidden" - -// cppCompiler.args "-static-libgcc" -// cppCompiler.args "-static-libstdc++" -// linker.args "-static-libgcc" -// linker.args "-static-libstdc++" - } else if (targetPlatform.operatingSystem.name == "windows") { + } else if (os == "windows") { if (toolChain in Gcc) { if (toolChain.name.startsWith('mingw')) { - cppCompiler.args '-I', "${projectDir}/src/native/cpp/fake_win32" + cppCompiler.args '-I', "$projectDir/src/native/cpp/fake_win32" } else { - cppCompiler.args '-I', "${org.gradle.internal.jvm.Jvm.current().javaHome}/include/win32" + cppCompiler.args '-I', "$javaHome/include/win32" } cppCompiler.args "-fpermissive" cppCompiler.args "-static" @@ -48,45 +99,59 @@ libraries { linker.args "-Wl,--exclude-all-symbols" } else if (toolChain in VisualCpp) { - cppCompiler.args "/I${org.gradle.internal.jvm.Jvm.current().javaHome}\\include\\win32" + cppCompiler.args "/I$javaHome\\include\\win32" } cppCompiler.define('WIN32') -// linker.args 'Shlwapi.lib', 'Advapi32.lib' } - } - } -} + + tasks.all { dependsOn unzipBulletIfNeeded } -// C++ sources for binary compilation -sources { - bulletjme { - cpp { - source { - srcDir 'src/native/cpp' - srcDir bulletSrcPath - exclude 'BulletMultiThreaded/GpuSoftBodySolvers/**' - include '**/*.cpp' + // Add output to jar file + jar.into("native/${os}/${arch}") { + from sharedLibraryFile } - exportedHeaders { - srcDir 'src/native/cpp' - srcDir bulletSrcPath - include '**/*.h' + + // Add depend on build + jar.dependsOn tasks + // Add output to libs folder + task "copyBinaryToLibs${targetPlatform.name}"(type: Copy, dependsOn: tasks) { + from sharedLibraryFile + into "libs/native/${os}/${arch}" } + // Add depend on copy + jar.dependsOn("copyBinaryToLibs${targetPlatform.name}") + } + withType(StaticLibraryBinarySpec) { + buildable = false } } -} -// Java source sets for IDE acces and source jar bundling / mavenization -sourceSets { - main { - java { - srcDir 'src/native/cpp' + platforms { + Windows32 { + architecture "x86" + operatingSystem "windows" + } + Windows64 { + architecture "x86_64" + operatingSystem "windows" + } + Mac32 { + architecture "x86" + operatingSystem "osx" + } + Mac64 { + architecture "x86_64" + operatingSystem "osx" + } + Linux32 { + architecture "x86" + operatingSystem "linux" + } + Linux64 { + architecture "x86_64" + operatingSystem "linux" } } -} - -// Set of target platforms, will be available based on build system -model { toolChains { gcc(Gcc) @@ -112,112 +177,40 @@ model { target("windows_x86_64") } } +} - platforms{ -// osx_universal { // TODO: universal binary doesn't work? -// architecture 'x86_64' -// architecture 'x86' -// operatingSystem 'osx' -// } - osx_x86 { - architecture "x86" - operatingSystem "osx" - } - osx_x86_64 { - architecture "x86_64" - operatingSystem "osx" - } - linux_x86 { - architecture "x86" - operatingSystem "linux" - } - linux_x86_64 { - architecture "x86_64" - operatingSystem "linux" - } - windows_x86 { - architecture "x86" - operatingSystem "windows" - } - windows_x86_64 { - architecture "x86_64" - operatingSystem "windows" +// Java source sets for IDE access and source jar bundling / mavenization +sourceSets { + main { + java { + srcDir 'src/native/cpp' } } } -// Download bullet if not available task downloadBullet(type: MyDownload) { sourceUrl = bulletUrl target = file(bulletZipFile) } -// Unzip bullet if not available task unzipBullet(type: Copy) { - def zipFile = file(bulletZipFile) - def outputDir = file(".") - - from zipTree(zipFile) - into outputDir + from zipTree(bulletZipFile) + into file('.') } + unzipBullet.dependsOn { - def zipFilePath = project.projectDir.absolutePath + File.separator + bulletZipFile - def zipFile = new File(zipFilePath) - if (!zipFile.exists()) { + if (!file(bulletZipFile).exists()) { downloadBullet } } -compileJava.dependsOn { - if(buildNativeProjects=="true"){ - def bulletUnzipDir = new File(project.projectDir.absolutePath + File.separator + bulletFolder) - if (!bulletUnzipDir.isDirectory()) { - unzipBullet - } - } -} - -binaries.withType(StaticLibraryBinarySpec) { - buildable = false +task unzipBulletIfNeeded << { } -// Adds all available binaries to java jar task -binaries.withType(SharedLibraryBinary) { binary -> - // For all binaries that can't be built on the current system - if(buildNativeProjects!="true"){ - buildable = false; - } - if (!buildable) { - //Get from libs folder if no fresh build is available in the build folder and add to jar file - if(!binary.tasks.outputFile.get(0).exists()){ - def fileName = binary.tasks.outputFile.get(0).getName(); - def precompiledFile = new File(project.projectDir.absolutePath + File.separator + "libs" + File.separator + "native" + File.separator + "${targetPlatform.operatingSystem.name}" + File.separator + "${targetPlatform.architecture.name}" + File.separator + "${fileName}") - if(precompiledFile.exists()){ - jar.into("native/${targetPlatform.operatingSystem.name}/${targetPlatform.architecture.name}") { from precompiledFile } - } - return - } else{ - // 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/${targetPlatform.operatingSystem.name}/${targetPlatform.architecture.name}") { from binary.tasks.outputFile } - return - } - } - - // For all binaries that can be built on the current system - def builderTask = binary.tasks - // Add output to jar file - jar.into("native/${targetPlatform.operatingSystem.name}/${targetPlatform.architecture.name}") { from builderTask.outputFile } - // Add depend on build - jar.dependsOn builderTask - // Add output to libs folder - task "copyBinaryToLibs${targetPlatform}"(type: Copy, dependsOn: builderTask) { - from builderTask.outputFile - into "libs/native/${targetPlatform.operatingSystem.name}/${targetPlatform.architecture.name}" +unzipBulletIfNeeded.dependsOn { + if (buildNativeProjects == "true" && !file(bulletFolder).isDirectory()) { + unzipBullet } - // Add depend on copy - jar.dependsOn("copyBinaryToLibs${targetPlatform}") } // Helper class to wrap ant dowload task @@ -230,7 +223,6 @@ class MyDownload extends DefaultTask { @TaskAction void download() { - ant.get(src: sourceUrl, dest: target) + ant.get(src: sourceUrl, dest: target) } -} - +} \ No newline at end of file