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

79 lines
1.9 KiB
Groovy

apply plugin: 'cpp'
apply plugin: 'eclipse'
eclipse.project.natures 'org.eclipse.pde.PluginNature'
sourceSets.main.java.srcDirs = ['source/java']
dependencies {
compile(
'commons-io:commons-io:2.4',
project(':com.ibm.wala.core'),
project(':com.ibm.wala.shrike'),
project(':com.ibm.wala.util'),
)
}
tasks.javadoc {
dependsOn ':com.ibm.wala.cast.js:compileJava'
doFirst {
classpath += files(project(':com.ibm.wala.cast.js').tasks.compileJava)
}
}
def currentJavaHome = org.gradle.internal.jvm.Jvm.current().javaHome
model {
repositories {
libs(PrebuiltLibraries) {
jdk {
def jniIncludeDir = "$currentJavaHome/include"
headers.srcDir jniIncludeDir
binaries.withType(SharedLibraryBinary) {
switch (targetPlatform.operatingSystem.name) {
case 'linux':
headers.srcDirs "$jniIncludeDir/linux"
break
case 'osx':
headers.srcDirs "$jniIncludeDir/darwin"
break
case 'windows':
headers.srcDirs "$jniIncludeDir/win32"
break
}
switch ("$targetPlatform.operatingSystem.name/$targetPlatform.architecture.name") {
case 'linux/x86-64':
sharedLibraryLinkFile = file("$currentJavaHome/jre/lib/amd64/server/libjvm.so")
break
case 'osx/x86-64':
sharedLibraryLinkFile = file("$currentJavaHome/jre/lib/server/libjvm.dylib")
break
case 'windows/x86-64':
// TODO: determine JVM library name and location on Windows
// sharedLibraryLinkFile = '???'
break
}
}
}
}
}
components {
cast(NativeLibrarySpec) {
sources.cpp {
def cSourceDir = 'source/c'
source {
srcDirs = ["$cSourceDir/jni"]
include '*.cpp'
}
exportedHeaders.srcDirs = ["$cSourceDir/include"]
lib library: 'jdk'
}
binaries.all {
// TODO: compute path on following line from 'jdk' library properties somehow
linker.args '-Wl,-rpath', "$currentJavaHome/jre/lib/amd64/server"
}
}
}
}