ci: Add CIFuzz action
[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.6 COMPONENTS Development) # javac, jar
61
62 # User can override this:
63 if(NOT DEFINED JAVA_SOURCE_VERSION)
64   set(JAVA_SOURCE_VERSION 1.6)
65 endif()
66 if(NOT DEFINED JAVA_TARGET_VERSION)
67   set(JAVA_TARGET_VERSION 1.6)
68 endif()
69
70 # Only build the java viewer if dev is found:
71 if(Java_Development_FOUND AND Java_JAVAC_EXECUTABLE)
72   set(jflags $ENV{JFLAGS})
73   # search for package org.apache.xerces.parsers
74   find_file(APACHE_XERCES_JAR
75     NAMES xerces-j2.jar xercesImpl.jar
76     PATHS /usr/share/java/
77     NO_DEFAULT_PATH
78     )
79   mark_as_advanced(APACHE_XERCES_JAR)
80
81   # Decide to build the simple viewer or the xerces one:
82   if(EXISTS ${APACHE_XERCES_JAR})
83     configure_file(
84       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer_xerces/dist/manifest.txt.in
85       ${CMAKE_CURRENT_BINARY_DIR}/opj_viewer_xerces/dist/manifest.txt
86       @ONLY
87       )
88     # build dep list:
89     file(GLOB java2_srcs "opj_viewer_xerces/src/*.java")
90
91     # Need some common files:
92     list(APPEND java2_srcs
93       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/ImageManager.java
94       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/ImgdecClient.java
95       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/JPIPHttpClient.java
96       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/MML.java
97       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/PnmImage.java
98       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/RegimViewer.java
99       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/src/ResizeListener.java
100       )
101
102     # make sure target javac dir exists:
103     file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/classes2)
104     # Build java
105     add_custom_command(
106       OUTPUT ${LIBRARY_OUTPUT_PATH}/opj_jpip_viewer.jar
107       COMMAND ${Java_JAVAC_EXECUTABLE} ${jflags}
108       -source ${JAVA_SOURCE_VERSION} -target ${JAVA_TARGET_VERSION}
109       -classpath ${APACHE_XERCES_JAR}
110       ${java2_srcs} -d ${CMAKE_CURRENT_BINARY_DIR}/classes2
111       COMMAND ${Java_JAR_EXECUTABLE} cfm ${LIBRARY_OUTPUT_PATH}/opj_jpip_viewer.jar
112       ${CMAKE_CURRENT_BINARY_DIR}/opj_viewer_xerces/dist/manifest.txt
113       -C ${CMAKE_CURRENT_BINARY_DIR}/classes2 .
114       DEPENDS ${java2_srcs}
115       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer_xerces/dist/manifest.txt.in
116       COMMENT "javac *.java; jar cvf -> opj_viewer_xerces.jar"
117       )
118
119     # name the target
120     add_custom_target(OPJViewerXercesJar ALL
121       DEPENDS ${LIBRARY_OUTPUT_PATH}/opj_jpip_viewer.jar
122       COMMENT "building opj_jpip_viewer.jar (xerces)"
123       )
124
125     install(FILES ${LIBRARY_OUTPUT_PATH}/opj_jpip_viewer.jar
126       DESTINATION ${OPENJPEG_INSTALL_SHARE_DIR} COMPONENT JavaModule
127       )
128   else()
129     # opj_viewer (simple, no xerces)
130     # build dep list:
131     file(GLOB java1_srcs "opj_viewer/src/*.java")
132
133     # make sure target javac dir exists:
134     file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/classes1)
135     # Build java
136     add_custom_command(
137       OUTPUT ${LIBRARY_OUTPUT_PATH}/opj_jpip_viewer.jar
138       COMMAND ${Java_JAVAC_EXECUTABLE} ${jflags}
139       -source ${JAVA_SOURCE_VERSION} -target ${JAVA_TARGET_VERSION}
140       ${java1_srcs} -d ${CMAKE_CURRENT_BINARY_DIR}/classes1
141       COMMAND ${Java_JAR_EXECUTABLE} cfm ${LIBRARY_OUTPUT_PATH}/opj_jpip_viewer.jar
142       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/dist/manifest.txt -C
143       ${CMAKE_CURRENT_BINARY_DIR}/classes1 .
144       DEPENDS ${java1_srcs}
145       ${CMAKE_CURRENT_SOURCE_DIR}/opj_viewer/dist/manifest.txt
146       COMMENT "javac *.java; jar cvf -> opj_jpip_viewer.jar"
147       )
148
149     # name the target
150     add_custom_target(OPJViewerJar ALL
151       DEPENDS ${LIBRARY_OUTPUT_PATH}/opj_jpip_viewer.jar
152       COMMENT "building opj_jpip_viewer.jar (no xerces found)"
153       )
154
155     install(FILES ${LIBRARY_OUTPUT_PATH}/opj_jpip_viewer.jar
156       DESTINATION ${OPENJPEG_INSTALL_SHARE_DIR} COMPONENT JavaModule
157       )
158   endif()
159 else()
160   message(WARNING "No java compiler found. Won't be able to build java viewer")
161 endif()