| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- // OpenAL Soft r1.15.1
- //String openALSoftUrl = 'http://repo.or.cz/w/openal-soft.git/snapshot/9b6a226da55a987cb883f425eeb568776ea12c8d.zip'
- // OpenAL Soft r1.15.1 + Android OpenSL Support
- String openALSoftUrl = 'http://repo.or.cz/w/openal-soft.git/snapshot/be25e6802dacad78876c6fa1d6a5c63797b8a9ed.zip'
- // OpenAL Soft r1.15.1 latest build (at the time)
- //String openALSoftUrl = 'http://repo.or.cz/w/openal-soft.git/snapshot/3f5914e0949ee12b504ee7254990e007ff8057ef.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
- }
- copyJmeOpenALSoft.doLast {
- String destDirPath = openalsoftBuildJniDir
- String classes = ""
- .concat("com.jme3.audio.android.AndroidOpenALSoftAudioRenderer, ")
- // println "openalsoft classes = " + classes
- // println "openalsoft destDir = " + destDir
- // println "openalsoft classpath = " + project.projectClassPath
- ant.javah(
- classpath: project.projectClassPath,
- destdir: destDirPath,
- class: classes
- )
- }
- task buildOpenAlSoftNativeLib(type: Exec, dependsOn: copyJmeOpenALSoft) {
- // println "openalsoft build dir: " + openalsoftBuildDir
- // println "ndkCommandPath: " + project.ndkCommandPath
- args 'TARGET_PLATFORM=android-9'
- workingDir openalsoftBuildDir
- executable project.ndkCommandPath
- }
- // 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 (ndkExists()) {
- compileJava.dependsOn { buildOpenAlSoftNativeLib }
- } else {
- 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)
- }
- }
|