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 Context.java Engine.java Image.java Interactor.java Log.java Options.java Scene.java Transform2D.java Types.java Utils.java Window.java) # Generate JNI headers, and builds a JAR package set(CMAKE_JAVA_COMPILE_FLAGS --release 17) add_jar(f3d-jar ${F3D_JAVA_SOURCES} GENERATE_NATIVE_HEADERS f3d-jni-headers OUTPUT_NAME f3d) set(F3D_JAVA_BINDINGS_SOURCES F3DCameraBindings.cxx F3DContextBindings.cxx F3DEngineBindings.cxx F3DImageBindings.cxx F3DInteractorBindings.cxx F3DLogBindings.cxx F3DOptionsBindings.cxx F3DSceneBindings.cxx F3DTypesBindings.cxx F3DUtilsBindings.cxx F3DWindowBindings.cxx) add_library(javaf3d SHARED ${F3D_JAVA_BINDINGS_SOURCES}) target_link_libraries(javaf3d PRIVATE f3d-jni-headers libf3d) 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() if(APPLE) set_target_properties(javaf3d PROPERTIES INSTALL_RPATH "@loader_path") elseif(UNIX) set_target_properties(javaf3d PROPERTIES INSTALL_RPATH "$ORIGIN") 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)