[trunk] Rework r2077
[openjpeg.git] / src / bin / jpip / CMakeLists.txt
1 # Headers file are located here:
2 include_directories(
3   ${OPENJPEG_BINARY_DIR}/src/lib/openjp2 # opj_config.h
4   ${OPENJPEG_SOURCE_DIR}/src/lib/openjp2
5   ${OPENJPEG_SOURCE_DIR}/src/bin/common # opj_getopt.h
6   ${OPENJPEG_SOURCE_DIR}/src/bin/jp2 # convert.h
7   ${OPENJPEG_SOURCE_DIR}/src/lib/openjpip
8   ${FCGI_INCLUDE_DIRS}
9 )
10
11 # Tool to embed metadata into JP2 file
12 add_executable(opj_jpip_addxml opj_jpip_addxml.c)
13 # Install exe
14 install(TARGETS opj_jpip_addxml
15   EXPORT OpenJPEGTargets
16   DESTINATION ${OPENJPEG_INSTALL_BIN_DIR} COMPONENT Applications
17   )
18
19 if(BUILD_JPIP_SERVER)
20   set(OPJ_SERVER_SRCS
21   ${CMAKE_CURRENT_SOURCE_DIR}/opj_server.c
22   )
23
24   # Build executable
25   add_executable(opj_server ${OPJ_SERVER_SRCS})
26   target_link_libraries(opj_server openjpip_server)
27   set_property(
28     TARGET opj_server
29     APPEND PROPERTY
30     COMPILE_DEFINITIONS SERVER QUIT_SIGNAL="quitJPIP"
31     )
32
33   # On unix you need to link to the math library:
34   if(UNIX)
35     target_link_libraries(opj_server m)
36   endif()
37
38   # Install exe
39   install(TARGETS opj_server
40     EXPORT OpenJPEGTargets
41     DESTINATION ${OPENJPEG_INSTALL_BIN_DIR} COMPONENT Applications
42     )
43 endif()
44
45 set(EXES
46   opj_dec_server
47   opj_jpip_transcode
48   opj_jpip_test
49   )
50 foreach(exe ${EXES})
51   if(${exe} STREQUAL "opj_jpip_compress")
52     include_directories(
53       ${Z_INCLUDE_DIRNAME}
54       ${PNG_INCLUDE_DIRNAME}
55       ${TIFF_INCLUDE_DIRNAME}
56     )
57     add_executable(${exe} ${exe}.c
58       ${OPENJPEG_SOURCE_DIR}/src/bin/common/opj_getopt.c
59       ${OPENJPEG_SOURCE_DIR}/src/bin/jp2/convert.c
60     )
61     target_link_libraries(${exe}
62       ${PNG_LIBNAME} ${TIFF_LIBNAME} ${LCMS_LIBNAME} ${Z_LIBNAME}
63     )
64   else()
65     add_executable(${exe} ${exe}.c)
66   endif()
67   target_link_libraries(${exe} openjpip)
68   install(TARGETS ${exe}
69     EXPORT OpenJPEGTargets
70     DESTINATION ${OPENJPEG_INSTALL_BIN_DIR} COMPONENT Applications
71     )
72 endforeach()
73
74 # Build the two java clients:
75 find_package(Java 1.5 COMPONENTS Development) # javac, jar
76
77 # Only build the java viewer if dev is found:
78 if(Java_Development_FOUND AND Java_JAVAC_EXECUTABLE)
79   set(jflags $ENV{JFLAGS})
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   # Decide to build the simple viewer or the xerces one:
89   if(EXISTS ${APACHE_XERCES_JAR})
90     configure_file(
91       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer_xerces/dist/manifest.txt.in
92       ${CMAKE_CURRENT_BINARY_DIR}/opj_viewer_xerces/dist/manifest.txt
93       @ONLY
94       )
95     # build dep list:
96     file(GLOB java2_srcs "opj_viewer_xerces/src/*.java")
97
98     # Need some common files:
99     list(APPEND java2_srcs
100       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/ImageManager.java
101       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/ImgdecClient.java
102       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/JPIPHttpClient.java
103       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/MML.java
104       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/PnmImage.java
105       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/RegimViewer.java
106       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/ResizeListener.java
107       )
108
109     # make sure target javac dir exists:
110     file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/classes2)
111     # Build java
112     add_custom_command(
113       OUTPUT ${LIBRARY_OUTPUT_PATH}/opj_jpip_viewer.jar
114       COMMAND ${Java_JAVAC_EXECUTABLE} ${jflags}
115       -classpath ${APACHE_XERCES_JAR}
116       ${java2_srcs} -d ${CMAKE_CURRENT_BINARY_DIR}/classes2
117       COMMAND ${Java_JAR_EXECUTABLE} cfm ${LIBRARY_OUTPUT_PATH}/opj_jpip_viewer.jar
118       ${CMAKE_CURRENT_BINARY_DIR}/opj_viewer_xerces/dist/manifest.txt
119       -C ${CMAKE_CURRENT_BINARY_DIR}/classes2 .
120       DEPENDS ${java2_srcs}
121       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer_xerces/dist/manifest.txt.in
122       COMMENT "javac *.java; jar cvf -> opj_viewer_xerces.jar"
123       )
124
125     # name the target
126     add_custom_target(OPJViewerXercesJar ALL
127       DEPENDS ${LIBRARY_OUTPUT_PATH}/opj_jpip_viewer.jar
128       COMMENT "building opj_jpip_viewer.jar (xerces)"
129       )
130
131     install(FILES ${LIBRARY_OUTPUT_PATH}/opj_jpip_viewer.jar
132       DESTINATION ${OPENJPEG_INSTALL_SHARE_DIR} COMPONENT JavaModule
133       )
134   else()
135     # opj_viewer (simple, no xerces)
136     # build dep list:
137     file(GLOB java1_srcs "opj_viewer/src/*.java")
138
139     # make sure target javac dir exists:
140     file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/classes1)
141     # Build java
142     add_custom_command(
143       OUTPUT ${LIBRARY_OUTPUT_PATH}/opj_jpip_viewer.jar
144       COMMAND ${Java_JAVAC_EXECUTABLE} ${jflags}
145       ${java1_srcs} -d ${CMAKE_CURRENT_BINARY_DIR}/classes1
146       COMMAND ${Java_JAR_EXECUTABLE} cfm ${LIBRARY_OUTPUT_PATH}/opj_jpip_viewer.jar
147       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/dist/manifest.txt -C
148       ${CMAKE_CURRENT_BINARY_DIR}/classes1 .
149       DEPENDS ${java1_srcs}
150       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/dist/manifest.txt
151       COMMENT "javac *.java; jar cvf -> opj_jpip_viewer.jar"
152       )
153
154     # name the target
155     add_custom_target(OPJViewerJar ALL
156       DEPENDS ${LIBRARY_OUTPUT_PATH}/opj_jpip_viewer.jar
157       COMMENT "building opj_jpip_viewer.jar (no xerces found)"
158       )
159
160     install(FILES ${LIBRARY_OUTPUT_PATH}/opj_jpip_viewer.jar
161       DESTINATION ${OPENJPEG_INSTALL_SHARE_DIR} COMPONENT JavaModule
162       )
163   endif()
164 else()
165   message(WARNING "No java compiler found. Wont be able to build java viewer")
166 endif()