123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- // OpenAL Soft r1.16
- String openALSoftUrl = 'http://repo.or.cz/w/openal-soft.git/snapshot/e5016f814a265ed592a88acea95cf912c4bfdf12.zip'
- String openALSoftZipFile = 'OpenALSoft.zip'
- // OpenAL Soft directory the download is extracted into
- // Typically, the downloaded OpenAL Soft zip file will extract to a directory
- // called "openal-soft"
- String openALSoftFolder = 'openal-soft'
- //Working directories for the ndk build.
- String openalsoftBuildDir = "${buildDir}" + File.separator + 'openalsoft'
- String openalsoftBuildJniDir = openalsoftBuildDir + File.separator + 'jni'
- String openalsoftBuildLibsDir = openalsoftBuildDir + File.separator + 'libs'
- //Pre-compiled libs directory
- String openalsoftPreCompiledLibsDir = 'libs' + File.separator + 'openalsoft'
- // jME Android Native source files path
- String openalsoftJmeAndroidPath = 'src/native/jme_openalsoft'
- // Download external source files if not available
- task downloadOpenALSoft(type: MyDownload) {
- sourceUrl = openALSoftUrl
- target = file(openALSoftZipFile)
- }
- // Unzip external source files
- task unzipOpenALSoft(type: Copy) {
- def zipFile = file(openALSoftZipFile)
- def outputDir = file(".")
- from zipTree(zipFile)
- into outputDir
- }
- unzipOpenALSoft.dependsOn {
- def zipFilePath = project.projectDir.absolutePath + File.separator + openALSoftZipFile
- def zipFile = new File(zipFilePath)
- // println "zipFile path: " + zipFile.absolutePath
- // println "zipFile exists: " + zipFile.exists()
- if (!zipFile.exists()) {
- downloadOpenALSoft
- }
- }
- // Copy external source files to jni directory
- task copyOpenALSoft(type: Copy) {
- def sourceDir = file(openALSoftFolder)
- def outputDir = file(openalsoftBuildJniDir)
- // println "copyOpenALSoft sourceDir: " + sourceDir
- // println "copyOpenALSoft outputDir: " + outputDir
- from sourceDir
- into outputDir
- }
- copyOpenALSoft.dependsOn {
- def openALSoftUnzipDir = new File(project.projectDir.absolutePath + File.separator + openALSoftFolder)
- // println "openALSoftUnzipDir path: " + openALSoftUnzipDir.absolutePath
- // println "openALSoftUnzipDir exists: " + openALSoftUnzipDir.isDirectory()
- if (!openALSoftUnzipDir.isDirectory()) {
- unzipOpenALSoft
- }
- }
- // Copy jME Android native files to jni directory
- task copyJmeOpenALSoft(type: Copy, dependsOn:copyOpenALSoft) {
- def sourceDir = file(openalsoftJmeAndroidPath)
- def outputDir = file(openalsoftBuildJniDir)
- // println "copyJmeOpenALSoft sourceDir: " + sourceDir
- // println "copyJmeOpenALSoft outputDir: " + outputDir
- from sourceDir
- into outputDir
- }
- task generateOpenAlSoftHeaders(type:Exec, dependsOn: copyJmeOpenALSoft) {
- executable org.gradle.internal.jvm.Jvm.current().getExecutable('javah')
- args '-d', openalsoftJmeAndroidPath
- args '-classpath', project.projectClassPath
- args "com.jme3.audio.android.AndroidAL"
- args "com.jme3.audio.android.AndroidALC"
- args "com.jme3.audio.android.AndroidEFX"
- }
- task buildOpenAlSoftNativeLib(type: Exec, dependsOn: generateOpenAlSoftHeaders) {
- // println "openalsoft build dir: " + openalsoftBuildDir
- // println "ndkCommandPath: " + project.ndkCommandPath
- workingDir openalsoftBuildDir
- executable rootProject.ndkCommandPath
- args "-j" + Runtime.runtime.availableProcessors()
- }
- task updatePreCompiledOpenAlSoftLibs(type: Copy, dependsOn: buildOpenAlSoftNativeLib) {
- def sourceDir = new File(openalsoftBuildLibsDir)
- def outputDir = new File(openalsoftPreCompiledLibsDir)
- // println "updatePreCompiledOpenAlSoftLibs sourceDir: " + sourceDir
- // println "updatePreCompiledOpenAlSoftLibs outputDir: " + outputDir
- from sourceDir
- into outputDir
- }
- // Copy pre-compiled libs to build directory (when not building new libs)
- task copyPreCompiledOpenAlSoftLibs(type: Copy) {
- def sourceDir = file(openalsoftPreCompiledLibsDir)
- def outputDir = file(openalsoftBuildLibsDir)
- // println "copyStbiJmeFiles sourceDir: " + sourceDir
- // println "copyStbiJmeFiles outputDir: " + outputDir
- from sourceDir
- into outputDir
- }
- if (rootProject.ndkExists && rootProject.buildNativeProjects) {
- // build native libs and update stored pre-compiled libs to commit
- compileJava.dependsOn { updatePreCompiledOpenAlSoftLibs }
- } else {
- // use pre-compiled native libs (not building new ones)
- compileJava.dependsOn { copyPreCompiledOpenAlSoftLibs }
- }
- jar.into("lib") { from openalsoftBuildLibsDir }
- // Helper class to wrap ant dowload task
- class MyDownload extends DefaultTask {
- @Input
- String sourceUrl
- @OutputFile
- File target
- @TaskAction
- void download() {
- ant.get(src: sourceUrl, dest: target)
- }
- }
|