Build conditionally the java binding
authorMathieu Malaterre <mathieu.malaterre@gmail.com>
Fri, 20 Jan 2012 14:08:59 +0000 (14:08 +0000)
committerMathieu Malaterre <mathieu.malaterre@gmail.com>
Fri, 20 Jan 2012 14:08:59 +0000 (14:08 +0000)
CMakeLists.txt
applications/CMakeLists.txt
applications/JavaOpenJPEG/CMakeLists.txt
applications/JavaOpenJPEG/JavaOpenJPEG.c
applications/JavaOpenJPEG/Makefile [deleted file]

index 5a8328c8cceeed6ad5016aa6bec4a210a4fb02c0..a079194e6d41e331cfd8eb19f1b86adcd57fae21 100644 (file)
@@ -186,7 +186,9 @@ OPTION(BUILD_CODEC "Build the CODEC executables" ON)
 OPTION(BUILD_MJ2 "Build the MJ2 executables." OFF)
 OPTION(BUILD_JPIP "Build the JPIP library and executables." OFF)
 OPTION(BUILD_VIEWER "Build the OPJViewer executable (C++)" OFF)
+OPTION(BUILD_JAVA "Build the openjpeg jar (Java)" OFF)
 MARK_AS_ADVANCED(BUILD_VIEWER)
+MARK_AS_ADVANCED(BUILD_JAVA)
 
 IF(BUILD_JPIP)
  FIND_PACKAGE(CURL)
index 9c0bbb20ede03186e890d3c504005c1d83af77f1..5070e53a1a141bb10ef15ccd5a500ade2db29ade 100644 (file)
@@ -15,3 +15,7 @@ ENDIF(BUILD_JPIP)
 IF(BUILD_VIEWER)
  ADD_SUBDIRECTORY(OPJViewer)
 ENDIF(BUILD_VIEWER)
+
+IF(BUILD_JAVA)
+       ADD_SUBDIRECTORY(JavaOpenJPEG)
+ENDIF(BUILD_JAVA)
index ecc8340d33ded443163ad5567071a4c37c6ae81f..2f4a481bf3e99192b9413394babcdfe37b211e1e 100644 (file)
@@ -1,33 +1,47 @@
 #JavaOpenJPEG/CMakeLists.txt
 
 # First thing define the common source:
-SET(common_SRCS
-  ../codec/convert.c
-  ../codec/index.c
-  ../common/opj_getopt.c
+SET(openjpegjni_SRCS
+  JavaOpenJPEGDecoder.c
+  JavaOpenJPEG.c
   )
 
+# JNI binding:
+find_package(JNI REQUIRED)
+include_directories(${JNI_INCLUDE_DIRS})
 
-# Headers file are located here:
-INCLUDE_DIRECTORIES(
+# required header file:
+include_directories(
   ${OPENJPEG_SOURCE_DIR}/libopenjpeg
-  ${LCMS_INCLUDE_DIR}
-  ${PNG_INCLUDE_DIR}
-  ${ZLIB_INCLUDE_DIR}
-  ${TIFF_INCLUDE_DIR}
+  ${OPENJPEG_SOURCE_DIR}/applications/common
+  ${OPENJPEG_SOURCE_DIR}/applications/codec
   )
 
-# Loop over all executables:
-FOREACH(exe j2k_to_image image_to_j2k)
-  ADD_EXECUTABLE(${exe} ${exe}.c ${common_SRCS})
-  TARGET_LINK_LIBRARIES(${exe} ${OPJ_PREFIX}openjpeg ${TIFF_LIBRARIES}
-       ${PNG_LIBRARIES} ${ZLIB_LIBRARY} ${LCMS_LIB})
-  # On unix you need to link to the math library:
-  IF(UNIX)
-    TARGET_LINK_LIBRARIES(${exe} -lm)
-  ENDIF(UNIX)
-  # Install exe
-  INSTALL_TARGETS(/bin/ ${exe})
-ENDFOREACH(exe)
+add_library(openjpegjni MODULE
+  ${openjpegjni_SRCS}
+  )
+
+# build jar:
+FIND_PACKAGE(Java 1.5 REQUIRED) # javac, jar
+
+# build dep list:
+file(GLOB java_srcs "java-sources/org/openJpeg/*.java")
 
+# make sure target javac dir exists:
+file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/classes)
+# Build java
+ADD_CUSTOM_COMMAND(
+  OUTPUT ${LIBRARY_OUTPUT_PATH}/openjpeg.jar
+  COMMAND ${Java_JAVAC_EXECUTABLE} -sourcepath  "${CMAKE_CURRENT_SOURCE_DIR}/java-sources"
+  ${java_srcs} -d ${CMAKE_CURRENT_BINARY_DIR}/classes
+  COMMAND ${Java_JAR_EXECUTABLE} cvf ${LIBRARY_OUTPUT_PATH}/openjpeg.jar org
+  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/classes
+  DEPENDS ${java_srcs}
+  COMMENT "javac *.java; jar cvf -> openjpeg.jar"
+)
 
+# name the target
+ADD_CUSTOM_TARGET(OpenJPEGJavaJar ALL
+  DEPENDS ${LIBRARY_OUTPUT_PATH}/openjpeg.jar
+  COMMENT "building openjpeg.jar"
+)
index eea41c251881438de331f897ee2d978fc4ad7f27..3f8e2ee722dc20405e4a9f3db7567d0a49c5f150 100644 (file)
@@ -380,7 +380,7 @@ static int initialise_4K_poc(opj_poc_t *POC, int numres){
 }\r
 \r
 void cinema_parameters(opj_cparameters_t *parameters){\r
-       parameters->tile_size_on = false;\r
+       parameters->tile_size_on = OPJ_FALSE;\r
        parameters->cp_tdx=1;\r
        parameters->cp_tdy=1;\r
        \r
@@ -663,7 +663,7 @@ int parse_cmdline_encoder(int argc, char **argv, opj_cparameters_t *parameters,
                        case 't':                       /* tiles */\r
                        {\r
                                sscanf(opj_optarg, "%d,%d", &parameters->cp_tdx, &parameters->cp_tdy);\r
-                               parameters->tile_size_on = true;\r
+                               parameters->tile_size_on = OPJ_TRUE;\r
                        }\r
                        break;\r
 \r
@@ -1628,7 +1628,7 @@ opj_image_t* loadImage(opj_cparameters_t *parameters, JNIEnv *env, jobject obj,
        jbyte           *jbBody;\r
        jshort          *jsBody;\r
        jint            *jiBody;\r
-       boolean         isCopy;\r
+       jboolean                isCopy;\r
 \r
        // Image width, height and depth\r
        fid = (*env)->GetFieldID(env, cls,"width", "I");\r
@@ -1776,7 +1776,7 @@ opj_image_t* loadImage(opj_cparameters_t *parameters, JNIEnv *env, jobject obj,
 JNIEXPORT jlong JNICALL Java_org_openJpeg_OpenJPEGJavaEncoder_internalEncodeImageToJ2K(JNIEnv *env, jobject obj, jobjectArray javaParameters) {\r
        int argc;               /* To simulate the command line parameters (taken from the javaParameters variable) and be able to re-use the */\r
        char **argv;    /*  'parse_cmdline_decoder' method taken from the j2k_to_image project */\r
-       bool bSuccess;\r
+       opj_bool bSuccess;\r
        opj_cparameters_t parameters;   /* compression parameters */\r
        img_fol_t img_fol;\r
        opj_event_mgr_t event_mgr;              /* event manager */\r
diff --git a/applications/JavaOpenJPEG/Makefile b/applications/JavaOpenJPEG/Makefile
deleted file mode 100644 (file)
index 74d9405..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-# Makefile for the main OpenJPEG codecs: j2k_to_image and image_to_j2k
-
-CFLAGS = -O3 -lstdc++ # -g -p -pg
-
-all: j2k_to_image image_to_j2k
-
-j2k_to_image: j2k_to_image.c ../libopenjpeg.a
-       gcc $(CFLAGS) ../common/opj_getopt.c convert.c j2k_to_image.c -o j2k_to_image -L.. -lopenjpeg -I ../libopenjpeg/ -lm -ltiff
-
-image_to_j2k: image_to_j2k.c ../libopenjpeg.a
-       gcc $(CFLAGS) ../common/opj_getopt.c convert.c image_to_j2k.c -o image_to_j2k -L.. -lopenjpeg -I ../libopenjpeg/ -lm -ltiff
-
-clean:
-       rm -f j2k_to_image image_to_j2k