diff options
Diffstat (limited to 'src/jniglue/CMakeLists.txt')
-rw-r--r-- | src/jniglue/CMakeLists.txt | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/src/jniglue/CMakeLists.txt b/src/jniglue/CMakeLists.txt new file mode 100644 index 0000000..aedb514 --- /dev/null +++ b/src/jniglue/CMakeLists.txt @@ -0,0 +1,92 @@ + +include_directories( + ${JNI_INCLUDE_DIRS} + ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_SOURCE_DIR}/export/ + ${CMAKE_BINARY_DIR}/export/ +) + +set(JNIOCIO_CLASSES + # Core + org.OpenColorIO.ExceptionBase + org.OpenColorIO.ExceptionMissingFile + org.OpenColorIO.Globals + org.OpenColorIO.Config + org.OpenColorIO.ColorSpace + org.OpenColorIO.Processor + org.OpenColorIO.GpuShaderDesc + org.OpenColorIO.Context + org.OpenColorIO.Look + org.OpenColorIO.ImageDesc + org.OpenColorIO.Transform + org.OpenColorIO.PackedImageDesc + org.OpenColorIO.PlanarImageDesc + org.OpenColorIO.Baker + # Enums + org.OpenColorIO.LoggingLevel + org.OpenColorIO.ColorSpaceDirection + org.OpenColorIO.TransformDirection + org.OpenColorIO.Interpolation + org.OpenColorIO.BitDepth + org.OpenColorIO.Allocation + org.OpenColorIO.GpuLanguage + # Transforms + org.OpenColorIO.AllocationTransform + org.OpenColorIO.CDLTransform + org.OpenColorIO.ColorSpaceTransform + org.OpenColorIO.DisplayTransform + org.OpenColorIO.ExponentTransform + org.OpenColorIO.FileTransform + org.OpenColorIO.GroupTransform + org.OpenColorIO.LogTransform + org.OpenColorIO.LookTransform + org.OpenColorIO.MatrixTransform + org.OpenColorIO.TruelightTransform +) + +file(GLOB JNIOCIO_JAVAS "org/OpenColorIO/*.java") + +message(STATUS "Creating Jar Manifest.txt") +configure_file(${CMAKE_SOURCE_DIR}/src/jniglue/Manifest.txt.in + ${CMAKE_CURRENT_BINARY_DIR}/Manifest.txt @ONLY) + +message(STATUS "Creating LoadLibrary.java") +configure_file(${CMAKE_SOURCE_DIR}/src/jniglue/LoadLibrary.java.in + ${CMAKE_CURRENT_BINARY_DIR}/LoadLibrary.java @ONLY) +list(APPEND JNIOCIO_JAVAS ${CMAKE_CURRENT_BINARY_DIR}/LoadLibrary.java) + +set(JNIOCIO_HEADERS) +set(JNIOCIO_H_INCLUDE "/* DO NOT EDIT THIS FILE - it is machine generated */\n\n") +foreach(_CLASS ${JNIOCIO_CLASSES}) + string(REPLACE "." "_" _CLASS_H ${_CLASS}) + set(_CLASS_H "${_CLASS_H}.h") + set(JNIOCIO_HEADERS ${JNIOCIO_HEADERS} "${_CLASS_H}") + set(JNIOCIO_H_INCLUDE "${JNIOCIO_H_INCLUDE}#include \"${_CLASS_H}\"\n") +endforeach() +message(STATUS "Creating OpenColorIOJNI.h that includes all the ocio jni headers") +file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/OpenColorIOJNI.h" "${JNIOCIO_H_INCLUDE}") + +set(JNIOCIO_JAR "${CMAKE_CURRENT_BINARY_DIR}/OpenColorIO-${OCIO_VERSION}.jar") +add_custom_command(OUTPUT ${JNIOCIO_HEADERS} + COMMAND cmake -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/org/OpenColorIO + COMMAND ${Java_JAVAC_EXECUTABLE} -cp ${CMAKE_CURRENT_BINARY_DIR} -d ${CMAKE_CURRENT_BINARY_DIR} ${JNIOCIO_JAVAS} + COMMAND ${Java_JAVAH_EXECUTABLE} -jni -force ${JNIOCIO_CLASSES} + COMMAND ${Java_JAR_EXECUTABLE} vcfm ${JNIOCIO_JAR} Manifest.txt org + IMPLICIT_DEPENDS ${JNIOCIO_JAVAS} + COMMENT "Compiling .java files, packaged .jar and creating jni C headers") + +file(GLOB JNIOCIO_SRC "*.cpp") +add_library(OpenColorIO-JNI SHARED ${JNIOCIO_SRC} ${JNIOCIO_HEADERS}) +set_target_properties(OpenColorIO-JNI PROPERTIES + VERSION ${OCIO_VERSION} + SOVERSION ${SOVERSION}) +if(OCIO_STATIC_JNIGLUE) + target_link_libraries(OpenColorIO-JNI OpenColorIO_STATIC) +else() + target_link_libraries(OpenColorIO-JNI OpenColorIO) +endif() + +add_subdirectory(tests) + +install(TARGETS OpenColorIO-JNI DESTINATION ${CMAKE_INSTALL_EXEC_PREFIX}/lib${LIB_SUFFIX}) +install(FILES ${JNIOCIO_JAR} DESTINATION ${CMAKE_INSTALL_PREFIX}/share/ocio/) |