Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,23 @@ include_directories(
../libhdfspp/lib
)

hadoop_add_dual_library(hdfs
set(HDFS_SOURCES
exception.c
jni_helper.c
hdfs.c
jclasses.c
${OS_DIR}/mutexes.c
${OS_DIR}/thread_local_storage.c
)
# We want to create an object library for hdfs
# so that we can reuse it for the targets
# (like get_jni_test), where we don't wish to
# link to hdfs's publicly linked libraries
# (like jvm)
add_library(hdfs_obj OBJECT ${HDFS_SOURCES})
set_target_properties(hdfs_obj PROPERTIES POSITION_INDEPENDENT_CODE ON)
hadoop_add_dual_library(hdfs
$<TARGET_OBJECTS:hdfs_obj>
$<TARGET_OBJECTS:x_platform_obj>
$<TARGET_OBJECTS:x_platform_obj_c_api>
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,19 @@ add_executable(uri_test uri_test.cc)
target_link_libraries(uri_test common gmock_main ${CMAKE_THREAD_LIBS_INIT})
add_memcheck_test(uri uri_test)

# We want to link to all the libraries of hdfs_static library,
# except jvm.lib since we want to override some of the functions
# provided by jvm.lib.
get_target_property(HDFS_STATIC_LIBS_NO_JVM hdfs_static LINK_LIBRARIES)
list(REMOVE_ITEM HDFS_STATIC_LIBS_NO_JVM ${JAVA_JVM_LIBRARY})
add_executable(get_jni_test libhdfs_getjni_test.cc)
target_link_libraries(get_jni_test gmock_main hdfs_static ${CMAKE_THREAD_LIBS_INIT})
target_link_libraries(get_jni_test
gmock_main
$<TARGET_OBJECTS:hdfs_obj>
$<TARGET_OBJECTS:x_platform_obj>
$<TARGET_OBJECTS:x_platform_obj_c_api>
${HDFS_STATIC_LIBS_NO_JVM}
${CMAKE_THREAD_LIBS_INIT})
add_memcheck_test(get_jni get_jni_test)

add_executable(remote_block_reader_test remote_block_reader_test.cc)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,26 @@
#include <hdfs/hdfs.h>
#include <jni.h>

#ifdef WIN32
#define DECLSPEC
#else
// Windows cribs when this is declared in the function definition,
// However, Linux needs it.
#define DECLSPEC _JNI_IMPORT_OR_EXPORT_
#endif

// hook the jvm runtime function. expect always failure
DECLSPEC jint JNICALL JNI_GetDefaultJavaVMInitArgs(void*) {
return 1;
}

// hook the jvm runtime function. expect always failure
_JNI_IMPORT_OR_EXPORT_ jint JNICALL JNI_GetDefaultJavaVMInitArgs(void*) {
DECLSPEC jint JNICALL JNI_CreateJavaVM(JavaVM**, void**, void*) {
return 1;
}

// hook the jvm runtime function. expect always failure
_JNI_IMPORT_OR_EXPORT_ jint JNICALL JNI_CreateJavaVM(JavaVM**, void**, void*) {
DECLSPEC jint JNICALL JNI_GetCreatedJavaVMs(JavaVM**, jsize, jsize*) {
return 1;
}

Expand Down