WALA/com.ibm.wala.cast.test/build.gradle

95 lines
3.0 KiB
Groovy

plugins {
id 'com.github.hauner.jarTest' version '1.0.1'
}
apply plugin: 'cpp'
sourceSets.test.java.srcDirs = ['harness-src/java']
dependencies {
testCompile 'junit:junit:4.11'
testCompile project(':com.ibm.wala.cast')
testCompile project(':com.ibm.wala.core')
testCompile project(':com.ibm.wala.util')
testCompile project(configuration: 'testArchives', path: ':com.ibm.wala.core.tests')
}
// TODO: build following targets for "test"-only, not "main"
def currentJvm = org.gradle.internal.jvm.Jvm.current()
task generateJniHeaders(type: Exec, dependsOn: [testClasses, ':com.ibm.wala.cast:classes']) {
// classes for which we need headers
def nativePackage = 'com.ibm.wala.cast.test'
def nativeClasses = ['TestNativeTranslator']
def qualifiedClasses = nativeClasses.collect { "$nativePackage.$it" }
// inputs and outputs, suitable for use with rule-based model configuration
ext {
sourceDir = null
headerDir = "$buildDir/include"
}
inputs.files files(qualifiedClasses.collect { "$buildDir/${it.replace('.', '/')}.class" })
outputs.files files(qualifiedClasses.collect { "$headerDir/${it.replace('.', '_')}.h" })
// javah command to generate headers
def sourceSets = [sourceSets.test, project(':com.ibm.wala.cast').sourceSets.main]
def classesDirs = sourceSets.inject(files()) { acc, val -> acc.plus(val.output.classesDirs) }
def classpath = classesDirs.asPath
def javah = currentJvm.getExecutable('javah')
commandLine(javah, '-d', "$headerDir", '-classpath', classpath)
args(qualifiedClasses)
}
model {
components {
xlator_test(NativeLibrarySpec) {
sources.cpp {
source {
srcDirs = ['harness-src/c']
include 'smoke.cpp'
}
generatedBy tasks.generateJniHeaders
['cast', 'jdk'].each {
lib project: ':com.ibm.wala.cast', library: it
}
}
binaries {
withType(StaticLibraryBinarySpec) {
buildable = false
}
all {
// TODO: compute path on following line from 'cast' library properties somehow
linker.args '-Wl,-rpath', "${project(':com.ibm.wala.cast').buildDir}/libs/cast/shared"
// TODO: compute path on following line from 'jdk' library properties somehow
linker.args '-Wl,-rpath', "${currentJvm.javaHome}/jre/lib/amd64/server"
}
}
}
smoke_main(NativeExecutableSpec) {
sources.cpp {
source {
srcDirs = ['harness-src/c']
include 'smoke_main.cpp'
}
['cast', 'jdk'].each {
lib project: ':com.ibm.wala.cast', library: it
}
}
binaries.all {
// TODO: compute path on following line from 'cast' library properties somehow
linker.args '-Wl,-rpath', "${project(':com.ibm.wala.cast').buildDir}/libs/cast/shared"
// TODO: compute path on following line from 'jdk' library properties somehow
linker.args '-Wl,-rpath', "${currentJvm.javaHome}/jre/lib/amd64/server"
}
}
}
}
// TODO: Java tests in this subproject should depend on the xlator_test library at run time
test {
// TODO: compute path on following line from 'xlator_test' library properties somehow
systemProperty "java.library.path", "$buildDir/libs/xlator_test/shared"
}