summaryrefslogtreecommitdiff
path: root/src/jniglue/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'src/jniglue/CMakeLists.txt')
-rw-r--r--src/jniglue/CMakeLists.txt92
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/)