81 lines
2.9 KiB
Groovy
Executable File
81 lines
2.9 KiB
Groovy
Executable File
apply plugin: 'java'
|
|
apply plugin: 'groovy'
|
|
apply plugin: 'cpp-lib'
|
|
apply plugin: 'idea'
|
|
apply plugin: 'application'
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
}
|
|
|
|
dependencies {
|
|
groovy 'org.codehaus.groovy:groovy:1.8.7'
|
|
testCompile 'org.spockframework:spock-core:0.6-groovy-1.8'
|
|
}
|
|
|
|
mainClassName = 'net.rubygrapefruit.platform.Main'
|
|
def nativeHeadersDir = file("$buildDir/nativeHeaders")
|
|
sourceCompatibility = 1.5
|
|
targetCompatibility = 1.5
|
|
|
|
configurations.compile.extendsFrom = []
|
|
|
|
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) {
|
|
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")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
task nativeHeaders {
|
|
def outputFile = file("$nativeHeadersDir/native.h")
|
|
inputs.files sourceSets.main.output
|
|
outputs.file outputFile
|
|
doLast {
|
|
outputFile.parentFile.mkdirs()
|
|
exec {
|
|
executable org.gradle.internal.jvm.Jvm.current().getExecutable('javah')
|
|
args '-o', outputFile
|
|
args '-classpath', sourceSets.main.output.classesDir
|
|
args 'net.rubygrapefruit.platform.internal.jni.NativeLibraryFunctions'
|
|
args 'net.rubygrapefruit.platform.internal.jni.PosixFileFunctions'
|
|
args 'net.rubygrapefruit.platform.internal.jni.PosixFileSystemFunctions'
|
|
args 'net.rubygrapefruit.platform.internal.jni.PosixProcessFunctions'
|
|
args 'net.rubygrapefruit.platform.internal.jni.PosixTerminalFunctions'
|
|
args 'net.rubygrapefruit.platform.internal.jni.TerminfoFunctions'
|
|
args 'net.rubygrapefruit.platform.internal.jni.WindowsConsoleFunctions'
|
|
}
|
|
}
|
|
}
|
|
|
|
task nativeJar(type: Jar) {
|
|
from compileMain
|
|
archiveName = 'native-platform-jni.jar'
|
|
}
|
|
|
|
startScripts.classpath += nativeJar.outputs.files
|
|
applicationDistribution.from(nativeJar) {
|
|
into 'lib'
|
|
}
|
|
|
|
compileMain.dependsOn nativeHeaders
|
|
test.dependsOn compileMain
|
|
|