1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
find_package(Java REQUIRED)
message(STATUS "Bindings: Java: Java ${Java_VERSION} found")
include(UseJava)
# With Android NDK, JNI is automatically found
if (NOT ANDROID)
find_package(JNI REQUIRED)
message(STATUS "Bindings: Java: JNI found")
endif()
set(F3D_JAVA_SOURCES
Camera.java
Engine.java
Options.java
Scene.java
Window.java)
# Generate JNI headers, and builds a JAR package
set(CMAKE_JAVA_COMPILE_FLAGS -source 8 -target 8)
add_jar(f3d-jar ${F3D_JAVA_SOURCES}
GENERATE_NATIVE_HEADERS f3d-jni-headers
OUTPUT_NAME f3d)
add_library(javaf3d SHARED F3DJavaBindings.cxx)
target_link_libraries(javaf3d PRIVATE f3d-jni-headers)
target_include_directories(javaf3d PRIVATE ${JNI_INCLUDE_DIRS})
target_link_libraries(javaf3d PRIVATE libf3d ${JNI_LIBRARIES})
if(UNIX)
# Set this option to detect mismatch in function implementation and headers
# automatically generated by javac
target_compile_options(javaf3d PRIVATE "-Werror=missing-declarations")
endif()
set_target_properties(javaf3d PROPERTIES
CXX_VISIBILITY_PRESET hidden
CXX_STANDARD 17
OUTPUT_NAME "f3d-java"
)
# Testing
if(BUILD_TESTING)
add_subdirectory(testing)
endif()
# Installing
install(TARGETS javaf3d
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT java)
install_jar(f3d-jar DESTINATION "share/java" COMPONENT java)
|