123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- // OpenAL Soft r1.21.1
- // TODO: update URL to jMonkeyEngine fork once it's updated with latest kcat's changes
- String openALSoftUrl = 'https://github.com/kcat/openal-soft/archive/1.21.1.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-1.21.1'
- //Working directories for the ndk build.
- String openalsoftBuildDir = "${buildDir}" + File.separator + 'openalsoft'
- String openalsoftClassesBuildDir = "${buildDir}" + File.separator + 'openalsoft_classes'
- String openalsoftBuildJniDir = openalsoftBuildDir + File.separator + 'jni'
- String openalsoftBuildLibsDir = openalsoftBuildDir + File.separator + 'libs'
- //Pre-compiled libs directory
- def rootPath = rootProject.projectDir.absolutePath
- String openalsoftPreCompiledLibsDir = rootPath + File.separator + 'build' + File.separator + 'native' + File.separator + 'android' + File.separator + 'openalsoft'
- // jME Android Native source files path
- String openalsoftJmeAndroidPath = 'src/native/jme_openalsoft'
- String jmeHeaders = 'src/native/headers'
- // Download external source files if not available
- task downloadOpenALSoft(type: MyDownload) {
- sourceUrl = openALSoftUrl
- target = file(openalsoftBuildDir + File.separator + openALSoftZipFile)
- }
- // Unzip external source files
- task unzipOpenALSoft(type: Copy) {
- def zipFile = file(openalsoftBuildDir + File.separator + openALSoftZipFile)
- def outputDir = file(openalsoftBuildDir)
- from zipTree(zipFile)
- into outputDir
- }
- unzipOpenALSoft.dependsOn {
- def zipFilePath = openalsoftBuildDir + 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(openalsoftBuildDir + File.separator + openALSoftFolder)
- def outputDir = file(openalsoftBuildJniDir)
- // println "copyOpenALSoft sourceDir: " + sourceDir
- // println "copyOpenALSoft outputDir: " + outputDir
- from sourceDir
- into outputDir
- }
- copyOpenALSoft.dependsOn {
- def openALSoftUnzipDir = new File(openalsoftBuildDir + File.separator + openALSoftFolder)
- // println "openALSoftUnzipDir path: " + openALSoftUnzipDir.absolutePath
- // println "openALSoftUnzipDir exists: " + openALSoftUnzipDir.isDirectory()
- if (!openALSoftUnzipDir.isDirectory()) {
- unzipOpenALSoft
- }
- }
- // Copy JME Headers to jni directory
- task copyJmeHeadersOpenAL(type: Copy) {
- from file(jmeHeaders)
- into file(openalsoftBuildJniDir + File.separator + "headers")
- }
- // Copy jME Android native files to jni directory
- task copyJmeOpenALSoft(type: Copy, dependsOn: [copyOpenALSoft, copyJmeHeadersOpenAL]) {
- def sourceDir = file(openalsoftJmeAndroidPath)
- def outputDir = file(openalsoftBuildJniDir)
- // println "copyJmeOpenALSoft sourceDir: " + sourceDir
- // println "copyJmeOpenALSoft outputDir: " + outputDir
- from sourceDir
- into outputDir
- }
- task buildOpenAlSoftNativeLib(type: Exec, dependsOn: copyJmeOpenALSoft) {
- // 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
- }
- // ndkExists is a boolean from the build.gradle in the root project
- // buildNativeProjects is a string set to "true"
- if (ndkExists && buildNativeProjects == "true") {
- // 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)
- }
- }
|