./gradlew libhbase-jni produces the share library *.o files ./gradlew libhbase_test failes with the
[...]
libhbase_test.c:(.text+0x6e1): undefined reference to 'hb_format_log_message'
libhbase_test.c:(.text+0x6fd): undefined reference to 'hb_log_message'
libhbase_test.c:(.text+0x709): undefined reference to 'hb_client_disconnect'
collect2: ld returned 1 exit status
:linkLibhbase_testExecutable FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':linkLibhbase_testExecutable'.
> Linker failed; see the error output for details.
When I add what I think is correct:
/*
* libhbase_test executable
*/
executables {
libhbase_test {
binaries.all {
lib 'libraries.libhbase-jni.shared'
cCompiler.args "-std=gnu99"
}
}
}
The build fails with the error:
> Not a valid type for a library dependency: libraries.libhbase-jni.shared
What am I missing?
apply plugin: 'c'
apply plugin: 'cpp'
import org.apache.tools.ant.taskdefs.condition.Os
ext {
javaHome = System.getenv('JAVA_HOME')
javaHomeInclude = javaHome + '/include'
if (System.properties['os.name'].toLowerCase().contains('linux'))
{
javaHomeIncludeOs = javaHomeInclude + '/linux'
}
else
{
javaHomeIncludeOs = javaHomeInclude + '/win32'
}
}
dependencies {
if (! javaHome) {
logger.error('JAVA_HOME is not set.')
}
println 'JAVA_HOME: ' + javaHome
}
/*
* libhbase-jni shared library
*/
libraries {
'libhbase-jni' {
binaries.withType(SharedLibraryBinary)
}
}
sources {
'libhbase-jni' {
cpp {
source {
srcDirs "src/jni_impl"
include "*.cc"
}
exportedHeaders {
srcDirs "include", javaHomeInclude, javaHomeIncludeOs
include "**/*.h"
}
}
c {
source {
srcDirs "src/common"
include "*.c"
}
exportedHeaders {
srcDirs "include"
include "*.h"
}
}
}
}
/*
* libhbase_test executable
*/
executables {
libhbase_test {
binaries.all {
lib 'libraries.libhbase-jni.shared'
cCompiler.args "-std=gnu99"
}
}
}
sources {
libhbase_test {
c {
source {
srcDir "example"
include "*.c"
}
exportedHeaders {
srcDir "include"
}
}
}
}
/*
* Build tasks
*/
task wrapper(type: Wrapper) {
description 'A wrapper which downloads and/or uses Gradle 1.10-rc-1'
gradleVersion = '1.10-rc-1'
}
task 'libhbase-jni' (dependsOn: 'libhbase-jniSharedLibrary') {
description 'Build libhbase-jni shared library.'
}
task 'libhbase_test' (dependsOn: 'libhbase_testExecutable') {
description 'Build libhabase_test executable.'
}