From edc504b9d446cc1739f3e8e087914cfe66d6cac3 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Fri, 4 May 2018 22:32:35 +0800 Subject: [PATCH] cmake: use javac -h for creating JNI native headers JDK 1.10 does not offer javah anymore, so we need to use "javac -h" or add_jar(... GENERATE_NATIVE_HEADERS) instead. Fixes: http://tracker.ceph.com/issues/24012 Signed-off-by: Kefu Chai --- src/java/CMakeLists.txt | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/java/CMakeLists.txt b/src/java/CMakeLists.txt index fe365501de9..b4cb3f84932 100644 --- a/src/java/CMakeLists.txt +++ b/src/java/CMakeLists.txt @@ -22,18 +22,21 @@ set(java_srcs # as per # https://blogs.oracle.com/darcy/entry/bootclasspath_older_source set(CMAKE_JAVA_COMPILE_FLAGS "-source" "1.7" "-target" "1.7" "-Xlint:-options") -add_jar(libcephfs ${java_srcs}) -install_jar(libcephfs share/java) +set(jni_header_dir "${CMAKE_CURRENT_BINARY_DIR}/native") +if(CMAKE_VERSION VERSION_LESS 3.11) + set(CMAKE_JAVA_COMPILE_FLAGS ${CMAKE_JAVA_COMPILE_FLAGS} "-h" ${jni_header_dir}) + add_jar(libcephfs ${java_srcs}) + add_custom_target( + jni-header + DEPENDS libcephfs) + add_dependencies(jni-header libcephfs) +else() + add_jar(libcephfs ${java_srcs} + GENERATE_NATIVE_HEADERS jni-header + DESTINATION ${jni_header_dir}) +endif() get_property(libcephfs_jar TARGET libcephfs PROPERTY JAR_FILE) - -set(java_h native/com_ceph_fs_CephMount.h) -add_custom_command( - OUTPUT ${java_h} - COMMAND ${Java_JAVAH_EXECUTABLE} -classpath ${libcephfs_jar} -jni -o ${CMAKE_CURRENT_BINARY_DIR}/${java_h} com.ceph.fs.CephMount) -add_custom_target( - jni-header - DEPENDS ${java_h}) -add_dependencies(jni-header libcephfs) +install_jar(libcephfs share/java) find_jar(JUNIT_JAR NAMES junit4 junit -- 2.39.5