By default, openjpip client can still built even without java compiler. Print a messa...
[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 IF(BUILD_JPIP_SERVER)
8   
9   SET(OPJ_SERVER_SRCS
10   ${CMAKE_CURRENT_SOURCE_DIR}/opj_server.c
11   )
12   
13   # Build executable
14   ADD_EXECUTABLE(opj_server ${OPJ_SERVER_SRCS})
15   TARGET_LINK_LIBRARIES(opj_server openjpip_server)
16   SET_PROPERTY(
17     TARGET opj_server
18     APPEND PROPERTY
19     COMPILE_DEFINITIONS SERVER QUIT_SIGNAL="quitJPIP"
20     )
21
22   # On unix you need to link to the math library:
23   IF(UNIX)
24     TARGET_LINK_LIBRARIES(opj_server m)
25   ENDIF(UNIX)
26
27   # Install exe
28   INSTALL(TARGETS opj_server
29     EXPORT OpenJPEGTargets
30     DESTINATION ${OPENJPEG_INSTALL_BIN_DIR} COMPONENT Applications
31     )
32 ENDIF(BUILD_JPIP_SERVER)
33
34 SET(EXES
35   opj_dec_server
36   jpip_to_jp2
37   jpip_to_j2k
38   test_index
39   )
40 FOREACH(exe ${EXES})
41   ADD_EXECUTABLE(${exe} ${exe}.c)
42   TARGET_LINK_LIBRARIES(${exe} openjpip_local)
43   INSTALL(TARGETS ${exe}
44     EXPORT OpenJPEGTargets
45     DESTINATION ${OPENJPEG_INSTALL_BIN_DIR} COMPONENT Applications
46     )
47 ENDFOREACH(exe)
48
49 # Build the two java clients:
50 FIND_PACKAGE(Java 1.5 COMPONENTS Development) # javac, jar
51
52 # Only build the java viewer if dev is found:
53 if(Java_Development_FOUND)
54   # 1. opj_viewer
55   # build dep list:
56   file(GLOB java1_srcs "opj_viewer/src/*.java")
57
58   # make sure target javac dir exists:
59   file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/classes1)
60   # Build java
61   ADD_CUSTOM_COMMAND(
62     OUTPUT ${LIBRARY_OUTPUT_PATH}/opj_viewer.jar
63     COMMAND ${Java_JAVAC_EXECUTABLE} 
64     ${java1_srcs} -d ${CMAKE_CURRENT_BINARY_DIR}/classes1
65     COMMAND ${Java_JAR_EXECUTABLE} cfm ${LIBRARY_OUTPUT_PATH}/opj_viewer.jar
66     ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/dist/manifest.txt -C
67     ${CMAKE_CURRENT_BINARY_DIR}/classes1 .
68     DEPENDS ${java1_srcs}
69     ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/dist/manifest.txt
70     COMMENT "javac *.java; jar cvf -> opj_viewer.jar"
71     )
72
73   # name the target
74   ADD_CUSTOM_TARGET(OPJViewerJar ALL
75     DEPENDS ${LIBRARY_OUTPUT_PATH}/opj_viewer.jar
76     COMMENT "building opj_viewer.jar"
77     )
78
79   # 2. opj_viewer_xerces
80   # search for package org.apache.xerces.parsers
81   find_file(APACHE_XERCES_JAR
82     NAMES xerces-j2.jar xercesImpl.jar
83     PATHS /usr/share/java/
84     NO_DEFAULT_PATH
85     )
86   mark_as_advanced(APACHE_XERCES_JAR)
87
88   if(EXISTS ${APACHE_XERCES_JAR})
89     configure_file(
90       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer_xerces/dist/manifest.txt.in
91       ${CMAKE_CURRENT_BINARY_DIR}/opj_viewer_xerces/dist/manifest.txt
92       @ONLY
93       )
94     # build dep list:
95     file(GLOB java2_srcs "opj_viewer_xerces/src/*.java")
96
97     # Need some common files:
98     list(APPEND java2_srcs
99       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/ImageManager.java
100       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/ImgdecClient.java
101       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/JPIPHttpClient.java
102       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/MML.java
103       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/PnmImage.java
104       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/RegimViewer.java
105       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/ResizeListener.java
106       )
107
108     # make sure target javac dir exists:
109     file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/classes2)
110     # Build java
111     ADD_CUSTOM_COMMAND(
112       OUTPUT ${LIBRARY_OUTPUT_PATH}/opj_viewer_xerces.jar
113       COMMAND ${Java_JAVAC_EXECUTABLE} 
114       -classpath ${APACHE_XERCES_JAR}
115       ${java2_srcs} -d ${CMAKE_CURRENT_BINARY_DIR}/classes2
116       COMMAND ${Java_JAR_EXECUTABLE} cfm ${LIBRARY_OUTPUT_PATH}/opj_viewer_xerces.jar
117       ${CMAKE_CURRENT_BINARY_DIR}/opj_viewer_xerces/dist/manifest.txt 
118       -C ${CMAKE_CURRENT_BINARY_DIR}/classes2 .
119       DEPENDS ${java2_srcs}
120       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer_xerces/dist/manifest.txt.in
121       COMMENT "javac *.java; jar cvf -> opj_viewer_xerces.jar"
122       )
123
124     # name the target
125     ADD_CUSTOM_TARGET(OPJViewerXercesJar ALL
126       DEPENDS ${LIBRARY_OUTPUT_PATH}/opj_viewer_xerces.jar
127       COMMENT "building opj_viewer_xerces.jar"
128       )
129   endif()
130 else(Java_Development_FOUND)
131   message(WARNING "No java compiler found. Wont be able to build java viewer")
132 endif()