From 43a482dfae5337bd7ef98670b538d8cbf9cc7937 Mon Sep 17 00:00:00 2001 From: Ben Liblit Date: Thu, 21 Dec 2017 13:14:27 -0600 Subject: [PATCH] Add Gradle logic for building a native library This approach uses no external makefiles; it's pure Gradle. Nice! --- com.ibm.wala.cast/build.gradle | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/com.ibm.wala.cast/build.gradle b/com.ibm.wala.cast/build.gradle index 447957042..19504eb42 100644 --- a/com.ibm.wala.cast/build.gradle +++ b/com.ibm.wala.cast/build.gradle @@ -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 + } + } + } +}