[trunk] FolderReorgProposal task: move source code to source dir
[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/lib/openjpip
6   ${FCGI_INCLUDE_DIRS}
7 )
8
9 # Tool to embed metadata into JP2 file
10 add_executable(opj_jpip_addxml opj_jpip_addxml.c)
11 # Install exe
12 install(TARGETS opj_jpip_addxml
13   EXPORT OpenJPEGTargets
14   DESTINATION ${OPENJPEG_INSTALL_BIN_DIR} COMPONENT Applications
15   )
16
17 if(BUILD_JPIP_SERVER)
18
19   set(OPJ_SERVER_SRCS
20   ${CMAKE_CURRENT_SOURCE_DIR}/opj_server.c
21   )
22
23   # Build executable
24   add_executable(opj_server ${OPJ_SERVER_SRCS})
25   target_link_libraries(opj_server openjpip_server)
26   set_property(
27     TARGET opj_server
28     APPEND PROPERTY
29     COMPILE_DEFINITIONS SERVER QUIT_SIGNAL="quitJPIP"
30     )
31
32   # On unix you need to link to the math library:
33   if(UNIX)
34     target_link_libraries(opj_server m)
35   endif()
36
37   # Install exe
38   install(TARGETS opj_server
39     EXPORT OpenJPEGTargets
40     DESTINATION ${OPENJPEG_INSTALL_BIN_DIR} COMPONENT Applications
41     )
42 endif()
43
44 set(EXES
45   opj_dec_server
46   opj_jpip_transcode
47   opj_jpip_test
48   )
49 foreach(exe ${EXES})
50   if(${exe} STREQUAL "opj_jpip_transcode")
51     add_executable(${exe} ${exe}.c
52       jpip_to_jp2.c
53       jpip_to_j2k.c
54     )
55   else()
56     add_executable(${exe} ${exe}.c)
57   endif()
58   target_link_libraries(${exe} openjpip_local)
59   install(TARGETS ${exe}
60     EXPORT OpenJPEGTargets
61     DESTINATION ${OPENJPEG_INSTALL_BIN_DIR} COMPONENT Applications
62     )
63 endforeach()
64
65 # Build the two java clients:
66 find_package(Java 1.5 COMPONENTS Development) # javac, jar
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   # search for package org.apache.xerces.parsers
72   find_file(APACHE_XERCES_JAR
73     NAMES xerces-j2.jar xercesImpl.jar
74     PATHS /usr/share/java/
75     NO_DEFAULT_PATH
76     )
77   mark_as_advanced(APACHE_XERCES_JAR)
78
79   # Decide to build the simple viewer or the xerces one:
80   if(EXISTS ${APACHE_XERCES_JAR})
81     configure_file(
82       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer_xerces/dist/manifest.txt.in
83       ${CMAKE_CURRENT_BINARY_DIR}/opj_viewer_xerces/dist/manifest.txt
84       @ONLY
85       )
86     # build dep list:
87     file(GLOB java2_srcs "opj_viewer_xerces/src/*.java")
88
89     # Need some common files:
90     list(APPEND java2_srcs
91       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/ImageManager.java
92       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/ImgdecClient.java
93       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/JPIPHttpClient.java
94       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/MML.java
95       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/PnmImage.java
96       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/RegimViewer.java
97       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/ResizeListener.java
98       )
99
100     # make sure target javac dir exists:
101     file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/classes2)
102     # Build java
103     add_custom_command(
104       OUTPUT ${LIBRARY_OUTPUT_PATH}/opj_jpip_viewer.jar
105       COMMAND ${Java_JAVAC_EXECUTABLE} ${jflags}
106       -classpath ${APACHE_XERCES_JAR}
107       ${java2_srcs} -d ${CMAKE_CURRENT_BINARY_DIR}/classes2
108       COMMAND ${Java_JAR_EXECUTABLE} cfm ${LIBRARY_OUTPUT_PATH}/opj_jpip_viewer.jar
109       ${CMAKE_CURRENT_BINARY_DIR}/opj_viewer_xerces/dist/manifest.txt
110       -C ${CMAKE_CURRENT_BINARY_DIR}/classes2 .
111       DEPENDS ${java2_srcs}
112       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer_xerces/dist/manifest.txt.in
113       COMMENT "javac *.java; jar cvf -> opj_viewer_xerces.jar"
114       )
115
116     # name the target
117     add_custom_target(OPJViewerXercesJar ALL
118       DEPENDS ${LIBRARY_OUTPUT_PATH}/opj_jpip_viewer.jar
119       COMMENT "building opj_jpip_viewer.jar (xerces)"
120       )
121
122     install(FILES ${LIBRARY_OUTPUT_PATH}/opj_jpip_viewer.jar
123       DESTINATION ${OPENJPEG_INSTALL_SHARE_DIR} COMPONENT JavaModule
124       )
125   else()
126     # opj_viewer (simple, no xerces)
127     # build dep list:
128     file(GLOB java1_srcs "opj_viewer/src/*.java")
129
130     # make sure target javac dir exists:
131     file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/classes1)
132     # Build java
133     add_custom_command(
134       OUTPUT ${LIBRARY_OUTPUT_PATH}/opj_jpip_viewer.jar
135       COMMAND ${Java_JAVAC_EXECUTABLE} ${jflags}
136       ${java1_srcs} -d ${CMAKE_CURRENT_BINARY_DIR}/classes1
137       COMMAND ${Java_JAR_EXECUTABLE} cfm ${LIBRARY_OUTPUT_PATH}/opj_jpip_viewer.jar
138       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/dist/manifest.txt -C
139       ${CMAKE_CURRENT_BINARY_DIR}/classes1 .
140       DEPENDS ${java1_srcs}
141       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/dist/manifest.txt
142       COMMENT "javac *.java; jar cvf -> opj_jpip_viewer.jar"
143       )
144
145     # name the target
146     add_custom_target(OPJViewerJar ALL
147       DEPENDS ${LIBRARY_OUTPUT_PATH}/opj_jpip_viewer.jar
148       COMMENT "building opj_jpip_viewer.jar (no xerces found)"
149       )
150
151     install(FILES ${LIBRARY_OUTPUT_PATH}/opj_jpip_viewer.jar
152       DESTINATION ${OPENJPEG_INSTALL_SHARE_DIR} COMPONENT JavaModule
153       )
154   endif()
155 else()
156   message(WARNING "No java compiler found. Wont be able to build java viewer")
157 endif()