Add Gradle logic for building a native library

This approach uses no external makefiles; it's pure Gradle.  Nice!
This commit is contained in:
Ben Liblit 2017-12-21 13:14:27 -06:00
parent 6007b11c3f
commit 43a482dfae
1 changed files with 26 additions and 0 deletions

View File

@ -1,3 +1,5 @@
apply plugin: 'cpp'
sourceSets.main.java.srcDir 'source/java'
dependencies {
@ -6,3 +8,27 @@ dependencies {
compile project(':com.ibm.wala.shrike')
compile project(':com.ibm.wala.util')
}
def jvm = org.gradle.internal.jvm.Jvm.current()
model {
components {
cast(NativeLibrarySpec) {
sources {
cpp {
source {
srcDir 'source/c/jni'
include '*.cpp'
}
}
}
def library = it
binaries.all {
def jniIncludeDir = "${jvm.getJavaHome()}/include"
cppCompiler.args '-I', "${library.properties.sources.cpp.source.srcDirs[0].parent}/include"
cppCompiler.args '-I', jniIncludeDir
cppCompiler.args '-I', "${jniIncludeDir}/linux" // TODO: make more portable
}
}
}
}