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

103 lines
3.3 KiB
Groovy
Raw Normal View History

apply plugin: 'com.github.hauner.jarTest'
apply plugin: 'cpp'
apply plugin: 'eclipse'
eclipse.project.natures 'org.eclipse.pde.PluginNature'
sourceSets.test.java.srcDirs = ['harness-src/java']
2017-11-27 08:34:48 +00:00
dependencies {
testCompile(
'junit:junit:4.11',
project(':com.ibm.wala.cast'),
project(':com.ibm.wala.core'),
project(':com.ibm.wala.util'),
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 generateJniHeaders
['cast', 'jdk'].each {
lib project: ':com.ibm.wala.cast', library: it
}
}
binaries {
withType(StaticLibraryBinarySpec) {
buildable = false
}
all {
switch ("$targetPlatform.operatingSystem.name/$targetPlatform.architecture.name") {
case 'linux/x86-64':
// 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 {
switch ("$targetPlatform.operatingSystem.name/$targetPlatform.architecture.name") {
case 'linux/x86-64':
// 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"
}