- Compile 64 and 32 bit variants on Linux.

- Give each variant of the native library a unique name.
This commit is contained in:
Adam Murdoch
2012-08-27 19:55:59 +10:00
parent 05a4cfe19b
commit f5dc6b80e1
3 changed files with 70 additions and 29 deletions

View File

@@ -1,6 +1,6 @@
apply plugin: 'java'
apply plugin: 'groovy'
apply plugin: 'cpp-lib'
apply plugin: 'cpp'
apply plugin: 'idea'
apply plugin: 'application'
@@ -20,27 +20,55 @@ targetCompatibility = 1.5
configurations.compile.extendsFrom = []
cpp {
sourceSets {
main
}
}
libraries {
main {
spec {
includes([nativeHeadersDir])
if (org.gradle.internal.os.OperatingSystem.current().macOsX) {
includes(['/System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers/'])
args("-lcurses", "-arch", "x86_64", "-arch", "i386", "-o", outputFile)
} else if (org.gradle.internal.os.OperatingSystem.current().windows) {
includes(["${org.gradle.internal.jvm.Jvm.current().javaHome}/include"])
includes(["${org.gradle.internal.jvm.Jvm.current().javaHome}/include/win32"])
args("/DWIN32")
} else if (org.gradle.internal.os.OperatingSystem.current().linux) {
if (org.gradle.internal.os.OperatingSystem.current().macOsX) {
universal.spec {
baseName = 'native-osx-universal'
includes(['/System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers/'])
args("-lcurses", "-arch", "x86_64", "-arch", "i386", "-o", outputFile)
}
} else if (org.gradle.internal.os.OperatingSystem.current().windows) {
main.spec {
baseName = 'native-win32'
includes(["${org.gradle.internal.jvm.Jvm.current().javaHome}/include"])
includes(["${org.gradle.internal.jvm.Jvm.current().javaHome}/include/win32"])
args("/DWIN32")
}
} else if (org.gradle.internal.os.OperatingSystem.current().linux) {
all {
spec {
includes(["${org.gradle.internal.jvm.Jvm.current().javaHome}/include"])
includes(["${org.gradle.internal.jvm.Jvm.current().javaHome}/include/linux"])
args("-lcurses")
} else {
includes(["${org.gradle.internal.jvm.Jvm.current().javaHome}/include"])
includes(["${org.gradle.internal.jvm.Jvm.current().javaHome}/include/solaris"])
args("-DSOLARIS", "-lcurses")
}
}
i386.spec {
baseName = 'native-linux-i386'
args("-m32")
}
amd64.spec {
baseName = 'native-linux-amd64'
args("-m64")
}
} else {
baseName = "native-solaris"
main.spec {
includes(["${org.gradle.internal.jvm.Jvm.current().javaHome}/include"])
includes(["${org.gradle.internal.jvm.Jvm.current().javaHome}/include/solaris"])
args("-DSOLARIS", "-lcurses")
}
}
all {
spec {
includes([nativeHeadersDir])
}
sourceSets << cpp.sourceSets.main
}
}
@@ -66,7 +94,7 @@ task nativeHeaders {
}
task nativeJar(type: Jar) {
from compileMain
from libraries.collect { it.spec.task }
archiveName = 'native-platform-jni.jar'
}
@@ -75,6 +103,7 @@ applicationDistribution.from(nativeJar) {
into 'lib'
}
compileMain.dependsOn nativeHeaders
test.dependsOn compileMain
libraries.all {
it.spec.task.dependsOn nativeHeaders
}
test.dependsOn libraries.collect { it.spec.task }