[1.5] Add a way for user to override source/target java version
[openjpeg.git] / applications / jpip / util / CMakeLists.txt
1 # Headers file are located here:
2 INCLUDE_DIRECTORIES(
3   ${OPENJPEG_SOURCE_DIR}/applications/jpip/libopenjpip
4   ${FCGI_INCLUDE_DIRS}
5 )
6
7 # Tool to embed metadata into JP2 file
8 ADD_EXECUTABLE(addXMLinJP2 addXMLinJP2.c)
9 # Install exe
10 INSTALL(TARGETS addXMLinJP2
11   EXPORT OpenJPEGTargets
12   DESTINATION ${OPENJPEG_INSTALL_BIN_DIR} COMPONENT Applications
13   )
14
15 IF(BUILD_JPIP_SERVER)
16   
17   SET(OPJ_SERVER_SRCS
18   ${CMAKE_CURRENT_SOURCE_DIR}/opj_server.c
19   )
20   
21   # Build executable
22   ADD_EXECUTABLE(opj_server ${OPJ_SERVER_SRCS})
23   TARGET_LINK_LIBRARIES(opj_server openjpip_server)
24   SET_PROPERTY(
25     TARGET opj_server
26     APPEND PROPERTY
27     COMPILE_DEFINITIONS SERVER QUIT_SIGNAL="quitJPIP"
28     )
29
30   # On unix you need to link to the math library:
31   IF(UNIX)
32     TARGET_LINK_LIBRARIES(opj_server m)
33   ENDIF(UNIX)
34
35   # Install exe
36   INSTALL(TARGETS opj_server
37     EXPORT OpenJPEGTargets
38     DESTINATION ${OPENJPEG_INSTALL_BIN_DIR} COMPONENT Applications
39     )
40 ENDIF(BUILD_JPIP_SERVER)
41
42 SET(EXES
43   opj_dec_server
44   jpip_to_jp2
45   jpip_to_j2k
46   test_index
47   )
48 FOREACH(exe ${EXES})
49   ADD_EXECUTABLE(${exe} ${exe}.c)
50   TARGET_LINK_LIBRARIES(${exe} openjpip_local)
51   INSTALL(TARGETS ${exe}
52     EXPORT OpenJPEGTargets
53     DESTINATION ${OPENJPEG_INSTALL_BIN_DIR} COMPONENT Applications
54     )
55 ENDFOREACH(exe)
56
57 # Build the two java clients:
58 FIND_PACKAGE(Java 1.5 COMPONENTS Development) # javac, jar
59
60 # User can override this:
61 if(NOT DEFINED JAVA_SOURCE_VERSION) 
62   set(JAVA_SOURCE_VERSION 1.5)
63 endif()
64 if(NOT DEFINED JAVA_TARGET_VERSION)
65   set(JAVA_TARGET_VERSION 1.5)
66 endif()
67
68 # Only build the java viewer if dev is found:
69 if(Java_Development_FOUND AND Java_JAVAC_EXECUTABLE)
70   set(jflags $ENV{JFLAGS})
71   # 1. opj_viewer
72   # build dep list:
73   file(GLOB java1_srcs "opj_viewer/src/*.java")
74
75   # make sure target javac dir exists:
76   file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/classes1)
77   # Build java
78   ADD_CUSTOM_COMMAND(
79     OUTPUT ${LIBRARY_OUTPUT_PATH}/opj_viewer.jar
80     COMMAND ${Java_JAVAC_EXECUTABLE} ${jflags}
81     -source ${JAVA_SOURCE_VERSION} -target ${JAVA_TARGET_VERSION}
82     ${java1_srcs} -d ${CMAKE_CURRENT_BINARY_DIR}/classes1
83     COMMAND ${Java_JAR_EXECUTABLE} cfm ${LIBRARY_OUTPUT_PATH}/opj_viewer.jar
84     ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/dist/manifest.txt -C
85     ${CMAKE_CURRENT_BINARY_DIR}/classes1 .
86     DEPENDS ${java1_srcs}
87     ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/dist/manifest.txt
88     COMMENT "javac *.java; jar cvf -> opj_viewer.jar"
89     )
90
91   # name the target
92   ADD_CUSTOM_TARGET(OPJViewerJar ALL
93     DEPENDS ${LIBRARY_OUTPUT_PATH}/opj_viewer.jar
94     COMMENT "building opj_viewer.jar"
95     )
96
97   INSTALL(FILES ${LIBRARY_OUTPUT_PATH}/opj_viewer.jar
98     DESTINATION ${OPENJPEG_INSTALL_SHARE_DIR} COMPONENT JavaModule
99     )
100
101   # 2. opj_viewer_xerces
102   # search for package org.apache.xerces.parsers
103   find_file(APACHE_XERCES_JAR
104     NAMES xerces-j2.jar xercesImpl.jar
105     PATHS /usr/share/java/
106     NO_DEFAULT_PATH
107     )
108   mark_as_advanced(APACHE_XERCES_JAR)
109
110   if(EXISTS ${APACHE_XERCES_JAR})
111     configure_file(
112       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer_xerces/dist/manifest.txt.in
113       ${CMAKE_CURRENT_BINARY_DIR}/opj_viewer_xerces/dist/manifest.txt
114       @ONLY
115       )
116     # build dep list:
117     file(GLOB java2_srcs "opj_viewer_xerces/src/*.java")
118
119     # Need some common files:
120     list(APPEND java2_srcs
121       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/ImageManager.java
122       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/ImgdecClient.java
123       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/JPIPHttpClient.java
124       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/MML.java
125       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/PnmImage.java
126       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/RegimViewer.java
127       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/ResizeListener.java
128       )
129
130     # make sure target javac dir exists:
131     file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/classes2)
132     # Build java
133     ADD_CUSTOM_COMMAND(
134       OUTPUT ${LIBRARY_OUTPUT_PATH}/opj_viewer_xerces.jar
135       COMMAND ${Java_JAVAC_EXECUTABLE} ${jflags}
136       -source ${JAVA_SOURCE_VERSION} -target ${JAVA_TARGET_VERSION}
137       -classpath ${APACHE_XERCES_JAR}
138       ${java2_srcs} -d ${CMAKE_CURRENT_BINARY_DIR}/classes2
139       COMMAND ${Java_JAR_EXECUTABLE} cfm ${LIBRARY_OUTPUT_PATH}/opj_viewer_xerces.jar
140       ${CMAKE_CURRENT_BINARY_DIR}/opj_viewer_xerces/dist/manifest.txt 
141       -C ${CMAKE_CURRENT_BINARY_DIR}/classes2 .
142       DEPENDS ${java2_srcs}
143       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer_xerces/dist/manifest.txt.in
144       COMMENT "javac *.java; jar cvf -> opj_viewer_xerces.jar"
145       )
146
147     # name the target
148     ADD_CUSTOM_TARGET(OPJViewerXercesJar ALL
149       DEPENDS ${LIBRARY_OUTPUT_PATH}/opj_viewer_xerces.jar
150       COMMENT "building opj_viewer_xerces.jar"
151       )
152
153     INSTALL(FILES ${LIBRARY_OUTPUT_PATH}/opj_viewer_xerces.jar
154       DESTINATION ${OPENJPEG_INSTALL_SHARE_DIR} COMPONENT JavaModule
155       )
156   endif()
157 else(Java_Development_FOUND)
158   message(WARNING "No java compiler found. Wont be able to build java viewer")
159 endif()