[trunk] Fix compilation:
[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   opj_jpip_compress
50   )
51 foreach(exe ${EXES})
52   if(${exe} STREQUAL "opj_jpip_compress")
53     include_directories(
54       ${Z_INCLUDE_DIRNAME}
55       ${PNG_INCLUDE_DIRNAME}
56       ${TIFF_INCLUDE_DIRNAME}
57     )
58     add_executable(${exe} ${exe}.c
59       ${OPENJPEG_SOURCE_DIR}/src/bin/common/opj_getopt.c
60       ${OPENJPEG_SOURCE_DIR}/src/bin/jp2/convert.c
61     )
62     target_link_libraries(${exe}
63       ${PNG_LIBNAME} ${TIFF_LIBNAME} ${LCMS_LIBNAME} ${Z_LIBNAME}
64     )
65   else()
66     add_executable(${exe} ${exe}.c)
67   endif()
68   target_link_libraries(${exe} openjpip)
69   install(TARGETS ${exe}
70     EXPORT OpenJPEGTargets
71     DESTINATION ${OPENJPEG_INSTALL_BIN_DIR} COMPONENT Applications
72     )
73 endforeach()
74
75 # Build the two java clients:
76 find_package(Java 1.5 COMPONENTS Development) # javac, jar
77
78 # Only build the java viewer if dev is found:
79 if(Java_Development_FOUND AND Java_JAVAC_EXECUTABLE)
80   set(jflags $ENV{JFLAGS})
81   # search for package org.apache.xerces.parsers
82   find_file(APACHE_XERCES_JAR
83     NAMES xerces-j2.jar xercesImpl.jar
84     PATHS /usr/share/java/
85     NO_DEFAULT_PATH
86     )
87   mark_as_advanced(APACHE_XERCES_JAR)
88
89   # Decide to build the simple viewer or the xerces one:
90   if(EXISTS ${APACHE_XERCES_JAR})
91     configure_file(
92       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer_xerces/dist/manifest.txt.in
93       ${CMAKE_CURRENT_BINARY_DIR}/opj_viewer_xerces/dist/manifest.txt
94       @ONLY
95       )
96     # build dep list:
97     file(GLOB java2_srcs "opj_viewer_xerces/src/*.java")
98
99     # Need some common files:
100     list(APPEND java2_srcs
101       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/ImageManager.java
102       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/ImgdecClient.java
103       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/JPIPHttpClient.java
104       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/MML.java
105       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/PnmImage.java
106       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/RegimViewer.java
107       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/ResizeListener.java
108       )
109
110     # make sure target javac dir exists:
111     file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/classes2)
112     # Build java
113     add_custom_command(
114       OUTPUT ${LIBRARY_OUTPUT_PATH}/opj_jpip_viewer.jar
115       COMMAND ${Java_JAVAC_EXECUTABLE} ${jflags}
116       -classpath ${APACHE_XERCES_JAR}
117       ${java2_srcs} -d ${CMAKE_CURRENT_BINARY_DIR}/classes2
118       COMMAND ${Java_JAR_EXECUTABLE} cfm ${LIBRARY_OUTPUT_PATH}/opj_jpip_viewer.jar
119       ${CMAKE_CURRENT_BINARY_DIR}/opj_viewer_xerces/dist/manifest.txt
120       -C ${CMAKE_CURRENT_BINARY_DIR}/classes2 .
121       DEPENDS ${java2_srcs}
122       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer_xerces/dist/manifest.txt.in
123       COMMENT "javac *.java; jar cvf -> opj_viewer_xerces.jar"
124       )
125
126     # name the target
127     add_custom_target(OPJViewerXercesJar ALL
128       DEPENDS ${LIBRARY_OUTPUT_PATH}/opj_jpip_viewer.jar
129       COMMENT "building opj_jpip_viewer.jar (xerces)"
130       )
131
132     install(FILES ${LIBRARY_OUTPUT_PATH}/opj_jpip_viewer.jar
133       DESTINATION ${OPENJPEG_INSTALL_SHARE_DIR} COMPONENT JavaModule
134       )
135   else()
136     # opj_viewer (simple, no xerces)
137     # build dep list:
138     file(GLOB java1_srcs "opj_viewer/src/*.java")
139
140     # make sure target javac dir exists:
141     file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/classes1)
142     # Build java
143     add_custom_command(
144       OUTPUT ${LIBRARY_OUTPUT_PATH}/opj_jpip_viewer.jar
145       COMMAND ${Java_JAVAC_EXECUTABLE} ${jflags}
146       ${java1_srcs} -d ${CMAKE_CURRENT_BINARY_DIR}/classes1
147       COMMAND ${Java_JAR_EXECUTABLE} cfm ${LIBRARY_OUTPUT_PATH}/opj_jpip_viewer.jar
148       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/dist/manifest.txt -C
149       ${CMAKE_CURRENT_BINARY_DIR}/classes1 .
150       DEPENDS ${java1_srcs}
151       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/dist/manifest.txt
152       COMMENT "javac *.java; jar cvf -> opj_jpip_viewer.jar"
153       )
154
155     # name the target
156     add_custom_target(OPJViewerJar ALL
157       DEPENDS ${LIBRARY_OUTPUT_PATH}/opj_jpip_viewer.jar
158       COMMENT "building opj_jpip_viewer.jar (no xerces found)"
159       )
160
161     install(FILES ${LIBRARY_OUTPUT_PATH}/opj_jpip_viewer.jar
162       DESTINATION ${OPENJPEG_INSTALL_SHARE_DIR} COMPONENT JavaModule
163       )
164   endif()
165 else()
166   message(WARNING "No java compiler found. Wont be able to build java viewer")
167 endif()