Add lzma support

This commit is contained in:
Seth Goings
2015-04-07 11:08:50 -06:00
parent 4bacddb20a
commit e60f53db73

View File

@ -71,6 +71,9 @@ ext {
java_home = java_home java_home = java_home
libDir = "${buildDir}/lib" libDir = "${buildDir}/lib"
lzmaDir = "${libDir}/lzma"
buildOptions = ['', '-lzma']
} }
repositories { repositories {
@ -110,32 +113,40 @@ model {
} }
tasks { tasks {
platforms.each { platform -> buildOptions.each { buildOption ->
if(platform.operatingSystem.name == "windows") { platforms.each { platform ->
def artifactName = platform.architecture.name == "i386" ? 'win32' : 'win64'
task "extract${platform.name}"(type: Copy) {
from {
tarTree(configurations."${platform.name}".find { it.name =~ artifactName })
}
into "${libDir}/tools"
}
}
task "build${platform.name}"(type: Exec) {
executable "make"
args "platform=${platform.operatingSystem.name}",
"arch=${platform.architecture.name}"
if(platform.operatingSystem.name == "windows") { if(platform.operatingSystem.name == "windows") {
dependsOn "extract${platform.name}" def artifactName = platform.architecture.name == "i386" ? 'win32' : 'win64'
args "win32=${libDir}/tools/win32",
"win64=${libDir}/tools/win64"
}
environment JAVA_HOME: java_home
}
assemble { task "extract${platform.name}"(type: Copy) {
dependsOn "build${platform.name}" from {
tarTree(configurations."${platform.name}".find { it.name =~ artifactName })
}
into "${libDir}/tools"
}
}
task "build${platform.name}${buildOption}"(type: Exec) {
executable "make"
args "platform=${platform.operatingSystem.name}",
"arch=${platform.architecture.name}"
if(buildOption == "-lzma") {
dependsOn 'extractLzma'
args "lzma=${lzmaDir}"
}
if(platform.operatingSystem.name == "windows") {
dependsOn "extract${platform.name}"
args "win32=${libDir}/tools/win32",
"win64=${libDir}/tools/win64"
}
environment JAVA_HOME: java_home
}
assemble {
dependsOn "build${platform.name}${buildOption}"
}
} }
} }
} }
@ -175,6 +186,19 @@ jar {
baseName "classpath-avian" baseName "classpath-avian"
} }
task downloadLzma(type: Exec) {
commandLine "curl"
args "--create-dirs", "-o", "${lzmaDir}/lzma920.tar.bz2", "-f", "http://oss.readytalk.com/avian-web/lzma920.tar.bz2"
}
task extractLzma(type: Copy) {
dependsOn downloadLzma
from {
tarTree(resources.bzip2("${lzmaDir}/lzma920.tar.bz2"))
}
into lzmaDir
}
task install { task install {
dependsOn assemble, publish dependsOn assemble, publish
} }
@ -212,30 +236,32 @@ publishing {
} }
} }
platforms.each { platform -> buildOptions.each { buildOption ->
def binSuffix="" platforms.each { platform ->
def publishBinSuffix="bin" def binSuffix=""
def publishBinSuffix="bin"
create(platform.name, IvyPublication) { create("${platform.name}${buildOption}", IvyPublication) {
def nativeBuildDir = "${buildDir}/${platform.operatingSystem.name}-${platform.architecture.name}" def nativeBuildDir = "${buildDir}/${platform.operatingSystem.name}-${platform.architecture.name}${buildOption}"
if(platform.operatingSystem.name == "windows") { if(platform.operatingSystem.name == "windows") {
publishBinSuffix = "exe" publishBinSuffix = "exe"
binSuffix = ".${publishBinSuffix}" binSuffix = ".${publishBinSuffix}"
} }
module "runtime-avian-${platform.name}" module "runtime-avian${buildOption}-${platform.name}"
artifact("${nativeBuildDir}/avian${binSuffix}") { artifact("${nativeBuildDir}/avian${binSuffix}") {
name "avian" name "avian"
type publishBinSuffix type publishBinSuffix
extension publishBinSuffix extension publishBinSuffix
} }
artifact("${nativeBuildDir}/libavian.a") { artifact("${nativeBuildDir}/libavian.a") {
name "libavian" name "libavian"
type "a" type "a"
extension "a" extension "a"
}
} }
} }
} }