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